비공개 네트워크 액세스 권한 메시지 오리진 트라이얼: HTTPS를 사용하는 웹사이트를 마이그레이션하는 경로

Yifan Luo
Yifan Luo

배경

Chrome 94에서는 안전하지 않은 공개 웹사이트의 비공개 네트워크 액세스를 차단했습니다. 진행 중인 안전하지 않은 컨텍스트에서의 비공개 네트워크 액세스 지원 중단 체험판을 통해 영향을 받는 웹사이트를 HTTPS로 이전하는 데 어려움이 있음이 드러났습니다. 일반적인 우려사항은 비공개 기기를 HTTPS로 이전하는 것이 어렵고 이로 인해 혼합 콘텐츠 검사 위반이 발생한다는 점입니다.

앞서 언급한 문제를 해결하기 위해 Chrome 120의 오리진 트라이얼에서 새로운 권한 메시지를 사용할 수 있습니다.

새 옵션으로 권한 메시지 표시

가져오기 옵션으로 새 targetAddressSpace 속성을 추가하면 요청에서 혼합 콘텐츠 검사를 건너뛸 수 있습니다.

예:

fetch("http://router.local/ping", {
  targetAddressSpace: "private",
});

비공개 네트워크 액세스: 프리플라이트 도입에 따라 모든 비공개 네트워크 요청 앞에 프리플라이트 요청이 표시됩니다. 이 사전 비행 요청에는 새 헤더 Access-Control-Request-Private-Network: true가 포함되며 해당 응답에는 Access-Control-Allow-Private-Network: true 헤더가 포함되어야 합니다.

새 권한 메시지를 수용하기 위해 기기에서 두 가지 새 응답 헤더인 Private-Network-Access-NamePrivate-Network-Access-ID를 통합해야 했습니다.

Private-Network-Access-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>

예:

Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"

Private-Network-Access-ID: 콜론으로 구분된 16진수 바이트 6개로 표시되는 48비트 값입니다. Private-Network-Access-Name: ECMAScript 정규 표현식 /^[a-z0-9_-.]+$/과 일치하는 유효한 이름(문자열)입니다. 이름의 최대 길이는 248 UTF-8 코드 단위입니다.

데모

데모는 https://private-network-access-permission-test.glitch.me/에서 확인할 수 있습니다.

오리진 트라이얼 등록

비공개 네트워크 액세스 권한 메시지가 개발자가 비공개 네트워크 액세스에 보안 컨텍스트 제한을 적용하는 데 도움이 되도록 Chrome 버전 120~122에서 출처 체험판으로 제공됩니다.

웹사이트에서 권한 메시지를 사용하도록 하려면 오리진 트라이얼에 등록하세요.

  1. 출처의 토큰을 요청합니다.
  2. 다음 방법 중 하나로 토큰을 사용합니다.
    • HTML: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • JavaScript에서: js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • HTTP 헤더: text Origin-Trial: TOKEN_GOES_HERE

이 기능과 관련된 의견이나 제안사항이 있으면 GitHub 저장소에서 문제를 제출하세요.

리소스