← 목록
기타 2026-05-27 4KB 읽기 4분

크라우니브라우저 v2 HTTP스택 ↔ 로컬직통 통합

2026-05-27 | gateway.yaml 매핑을 브라우저 v2.1에 1차 통합. 메인 빌드 성공, 단위 검증 100%.

개요

크라우니브라우저 v2.1의 HTTP스택.한선에 로컬직통.한선을 import하여, gateway.yaml에 등록된 170 도메인을 브라우저가 자동으로 127.0.0.1:포트로 라우팅하도록 통합. Host 헤더는 원래 호스트 유지(서버 호스트 라우팅 보존).

무엇을 했는지

통합 지점

/Users/ef/CrownyBrowser/src/v2/HTTP스택.한선:

  1. import 추가 (line 31):
javascript   가져오기 "로컬직통.한선"
   

  1. 전역 매핑 (line 689 근처):
javascript   변수 _로컬직통매핑 = 로컬매핑로드()
   

  1. _HTTP요청내부() URL파싱 직후 — 로컬 매핑이 있으면 연결 호스트/포트 교체:
javascript   변수 _연결호스트 = 호스트
   변수 _연결포트   = 포트
   변수 _로컬포트   = 로컬포트조회(_로컬직통매핑, 호스트)
   만약 (_로컬포트 > 0) {
       _연결호스트 = "127.0.0.1"
       _연결포트   = _로컬포트
       tls여부     = 거짓
   }
   

  1. HSTS 우회 — 로컬직통 경로면 http 강제 허용:
javascript   만약 (_로컬포트 < 0 그리고 프로토콜 == "http" 그리고 HTTP_HSTS검사(호스트)) { ... }
   

  1. 연결 획득에 새 호스트/포트 사용:
javascript   변수 연결 = 연결획득(_전역연결풀, _연결호스트, _연결포트, tls여부)
   

검증 (크라우니브라우저 우선 — 피드백 규칙 준수)

단계결과
HTTP스택.한선 단독 컴파일50,664 큐브, 0 에러
단위 테스트 (매핑 + 조회)170 매핑, docs=4100/main=7730/google=-1 모두 정확
크라우니브라우저 v2 메인 빌드 (크라우니브라우저v2.한선)972,612 큐브, 27MB TOAU, 0 새 충돌
HTTP요청 실제 fetch라우팅 로직 동작, 단 crownyc VM 소켓 클라이언트 자체 이슈로 실제 응답 503 (소켓생성 -1) — 별개 작업
크롬 cross-check는 사용자가 별도로 진행 (정책 준수).

관련 파일

파일변경
/Users/ef/CrownyBrowser/src/v2/HTTP스택.한선+18줄 (import + 매핑 변수 + 라우팅 블록 + HSTS 가드 + 연결 호출)
/Users/ef/CrownyBrowser/src/v2/HTTP스택.한선.bak-20260527-lbv통합 전 백업
/Users/ef/CrownyOS/crownyc/libs/로컬직통.한선이전 작업의 결과물, 변경 없음

잔여 이슈 / 다음 단계

crownyc VM 소켓 클라이언트 검증 별개 작업 필요

  • 소켓생성() 인자 없이 호출하면 -1 반환. 시그니처는 소켓생성(domain=2, type=1) (AF_INET, STREAM).
  • HTTP스택의 연결획득()이 내부적으로 어떻게 소켓을 생성하는지 별도 검사 필요.
  • curl로 직접 http://127.0.0.1:4100/은 200 응답 — 서버는 정상.
  • 즉 통합 로직은 통과, VM 소켓 클라이언트 호출 시퀀스가 별도 작업.

Path A WebKit 래퍼와의 통합

  • native/crowny-browser.m은 WKWebView 기반. WKWebView 자체는 macOS 시스템 네트워크 스택 사용.
  • WKURLSchemeHandler 또는 WKWebsiteDataStore의 proxy 설정으로 로컬직통을 주입하는 별도 작업 필요.
  • 단기 우회: /etc/hosts에 매핑 추가하거나, lbv 열기 CLI를 Path A에서 호출.

사용자 트래픽 흐름

이번 통합으로 브라우저 v2 Path B가 활성화될 때:

사용자 입력 https://docs.crowny.org/foo
  → URL파싱
  → 로컬직통 조회 → 매핑 있음 → 호스트=127.0.0.1, 포트=4100
  → http://127.0.0.1:4100/foo 로 연결
  → Host 헤더: docs.crowny.org (원본 유지)
  → 응답

게이트웨이(8080/8443) 다운 상태에서도 즉시 동작. CRNS(한글 도메인)와 충돌 없음.