지금까지의 모든 대답은 단순화되었거나 불완전하거나 부분적으로 잘못 된 것처럼 보입니다 (주제는 복잡하고 상황이 혼란스럽고 이름이 잘 지정되어 있지 않습니다!).
에서 만든 연결을 재사용하려면 <link rel=preconnect>요청이 브라우저 자격 증명을 보낼지 여부 (브라우저에서 명시 적 또는 암시 적으로 설정할 수 있음)에서 가져 오려는 콘텐츠 종류에 따라 다릅니다.
요청이 동일 출처 ( example.com요청 하위 리소스 example.com)
preconnect처음 에는 전혀 필요가 없습니다 . 브라우저는 페이지를 꽤 오랫동안로드 한 후에도 연결을 유지합니다. 열려있는 연결이 여러 개인 경우 브라우저는 열어야 할 연결 수와 열 수를 결정합니다 (서버가 TLS 핸드 셰이크, 브라우저 설정 등에서 HTTP / 2 지원을 발표하는지에 따라)
점검 : 동일 출처 요청에 crossorigin속성이있는 경우 : 사용 또는 무시됩니까?
요청이 교차 출처입니다 ( example.com에서 하위 리소스 요청 another.com)
- 실제 요청 에 HTML에서 명시 적으로 설정된
crossorigin 속성이있는 경우 ( JS에서는 중요 함) 사전 연결에도 동일한 값을 가져야합니다 (아마 의미가없고 무시 되는 경우를 제외하고 는 완전히 명확하지 않음) 나 아직)crossOrigincrossorigin
- 그렇지 않으면 요청이있는 경우
<script type=module>: 점검
- 요청하고는 "오래된 학교"요청하면 다른,
<img>, <style type=stylesheet>, <iframe>, 고전 <script>등 (HTML 또는 JS를 통해 시작) 없이 crossorigin명시 적으로 지정된 후 사전 연결은 MUST이없는 crossorigin속성 세트를.
- 그렇지 않으면 요청이 교차 출처 글꼴 요청 인 경우 사전 연결에는
crossorigin=anonymous
- 또, 요청이있는 경우 출처 간
fetch 또는 XHR:
- 자격 증명 모드에서 수행되는 경우 (예 : 쿠키가 첨부되거나 HTTP 기본 인증이 사용됩니다. 가져 오기의
credentials !== omit경우 이는 XHR의 경우 withCredentials === true:) : 사전 연결에 있어야합니다crossorigin=use-credentials
- 자격 증명 모드가 아닌 경우 : preconnect는
crossorigin=anonymous
마지막 경우 (fetch / XHR)의 경우 Chrome / Firefox devtools의 네트워크 패널로 이동하여 요청을 마우스 오른쪽 버튼으로 클릭 한 copy as fetch다음 드롭 다운에서 선택하십시오. 그러면 JS 스 니펫이 생성되어 해당 요청이 CORS 가능 ( "mode"=="cors") 및 자격 증명 ( "credentials"=="include"|"same-origin") 인지 알려줍니다 .
참고 그러나 트릭은 위의 예를 들어 있기 때문에, 요청을 가져 오기 / 비 XHR 제대로 작동하지 않는 fetch및 <img>이전과 설명, 연결을 설정하기 위해 다른 알고리즘을 사용합니다.
마지막으로 HTML에서 <link ...crossorigin>=== <link ...crossorigin=anonymous>입니다.
추가 메모 및 링크 :