지금까지의 모든 대답은 단순화되었거나 불완전하거나 부분적으로 잘못 된 것처럼 보입니다 (주제는 복잡하고 상황이 혼란스럽고 이름이 잘 지정되어 있지 않습니다!).
에서 만든 연결을 재사용하려면 <link rel=preconnect>
요청이 브라우저 자격 증명을 보낼지 여부 (브라우저에서 명시 적 또는 암시 적으로 설정할 수 있음)에서 가져 오려는 콘텐츠 종류에 따라 다릅니다.
요청이 동일 출처 ( example.com
요청 하위 리소스 example.com
)
preconnect
처음 에는 전혀 필요가 없습니다 . 브라우저는 페이지를 꽤 오랫동안로드 한 후에도 연결을 유지합니다. 열려있는 연결이 여러 개인 경우 브라우저는 열어야 할 연결 수와 열 수를 결정합니다 (서버가 TLS 핸드 셰이크, 브라우저 설정 등에서 HTTP / 2 지원을 발표하는지에 따라)
점검 : 동일 출처 요청에 crossorigin
속성이있는 경우 : 사용 또는 무시됩니까?
요청이 교차 출처입니다 ( example.com
에서 하위 리소스 요청 another.com
)
- 실제 요청 에 HTML에서 명시 적으로 설정된
crossorigin
속성이있는 경우 ( JS에서는 중요 함) 사전 연결에도 동일한 값을 가져야합니다 (아마 의미가없고 무시 되는 경우를 제외하고 는 완전히 명확하지 않음) 나 아직)crossOrigin
crossorigin
- 그렇지 않으면 요청이있는 경우
<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>
입니다.
추가 메모 및 링크 :