배경
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-Name
및 Private-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에서 출처 체험판으로 제공됩니다.
웹사이트에서 권한 메시지를 사용할 수 있도록 오리진 체험판에 등록합니다.
- 출처의 토큰을 요청합니다.
- 다음 방법 중 하나로 토큰을 사용합니다.
- 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
- HTML:
이 기능과 관련된 의견이나 제안사항이 있으면 GitHub 저장소에서 문제를 제출하세요.