모든 웹 요청이 브라우저의 쿠키를 보내나요?
페이지 뷰를 말하는 것이 아니라 이미지, .js
파일 등을 요청하는 것입니다 .
업데이트 웹 페이지에 50 개의 요소가 있으면 50 개의 요청입니다. 각 요청에 대해 SAME 쿠키를 보내는 이유는 무엇입니까?
모든 웹 요청이 브라우저의 쿠키를 보내나요?
페이지 뷰를 말하는 것이 아니라 이미지, .js
파일 등을 요청하는 것입니다 .
업데이트 웹 페이지에 50 개의 요소가 있으면 50 개의 요청입니다. 각 요청에 대해 SAME 쿠키를 보내는 이유는 무엇입니까?
답변:
예, 요청한 URL이 쿠키에 정의 된 동일한 도메인 및 경로 (및 보안, httponly, 만료되지 않은 등의 다른 모든 제한) 내에있는 경우 쿠키는 모든 요청에 대해 전송됩니다.
다른 사람들이 말했듯이 쿠키의 호스트, 경로 등의 제한 사항이 충족되면 50 번 전송됩니다.
그러나 쿠키는 HTTP 기능이고 HTTP는 상태 비 저장이기 때문에 이유를 물었습니다. HTTP는 서버가 요청 사이의 상태를 저장하지 않고 작동하도록 설계되었습니다.
실제로 서버는 어떤 사용자가 주어진 요청을 보내는 지 인식하는 확실한 방법이 없습니다. 단일 웹 프록시 (및 IP 주소) 뒤에는 수천 명의 사용자가있을 수 있습니다. 쿠키가 모든 요청을 보내지 않은 경우 서버는 어떤 사용자가 어떤 리소스를 요청하는지 알 수있는 방법이 없습니다.
마지막으로, 서버에 쿠키가 필요한지 여부는 브라우저에 실마리가 없습니다. 서버가 요청을 위해 쿠키를 foo.com에 보내도록 지시했다는 것을 알기 때문에 그렇게합니다. 때로는 이미지 (예 : 사용자별로 동적으로 생성 된 이미지)가 필요하지만 때로는 그렇지는 않지만 브라우저는 알 수 없습니다.
예. 모든 요청은 동일한 도메인에 속하는 쿠키를 보냅니다. HTTP는 상태 비 저장이므로 캐시되지 않습니다. 즉, 모든 요청은 서버가 처리 할 작업을 파악하기에 충분해야합니다. 특정 사용자 만 액세스 할 수있는 이미지가 있다고 가정하십시오. 당신은 해야한다 서버가 그것이 점점 요청의 풀 사이에 당신이 아닌 다른 사람, 또는 손님, 알고있다, 그래서 그 (50 개) 요청을 모두 사용하여 인증 쿠키를 보냅니다.
그러나 HTTPS 설정, 경로 또는 도메인과 같은 다른 응답에 언급 된 다른 제한이 주어지면 쿠키가 전송되지 않을 수 있습니다. 특히 중요한 점은 쿠키가 도메인간에 공유되지 않는 것입니다. 이는 언급 한 이미지 및 스크립트와 같은 정적 파일에 대한 HTTP 호출 크기를 줄이는 데 도움이됩니다.
예 : 쿠키가 4 개 있습니다 www.stackoverflow.com
. 에 요청하면 www.stackoverflow.com/images/logo.png
4 개의 쿠키가 모두 전송됩니다.
그러나 stackoverflow.com/images/logo.png
(하위 도메인 변경에 대한 통지) 또는를 요청하면 images.stackoverflow.com/logo.png
해당 쿠키 4 개가 존재하지 않지만 해당 도메인과 관련된 쿠키는 존재합니다.
쿠키 및 이미지 요청에 대한 자세한 내용은 예를 들어이 StackOverflow 블로그 게시물에서 확인할 수 있습니다.
3 년이 지났습니다
브라우저가 쿠키를 보내지 않는 또 다른 이유가 있습니다. 태그에 crossOrigin
속성을 추가 <script>
하고에 값을 추가 할 수 있습니다 "anonymous"
. 쿠키가 대상 서버로 전송되지 않습니다. 시간의 99.9 %에서 자바 스크립트는 정적 파일이며 요청 쿠키를 기반으로 해당 js 코드를 생성하지 않습니다. 1KB의 쿠키가 있고 페이지에 200 개의 리소스가있는 경우 사용자가 200KB를 업로드하는 중이며 3G에 시간이 걸리고 결과 페이지에 아무런 영향을 미치지 않을 수 있습니다. 참조를 위해 HTML 속성 : crossorigin 을 방문하십시오 .
나는 이것이 오래된 실이라는 것을 안다. 그러나 마지막 점을 추가하면 대부분의 브라우저가 도메인에 쿠키를 보내지 않는 것으로 나타났습니다. 예를 들어에 http://example.com.
설정된 쿠키는받지 않습니다 .example.com
. 반면에 Apache는 그것들을 동일한 호스트로 취급합니다. 내가 포함하는 외부 리소스에 대해 교차 도메인 추적을 더 어렵게 만드는 데 유용하지만 성능상의 이유로 사용할 수 있습니다. 이로 인해 https
인증서 유효성 검사가 중단됩니다. 브라우저 샷과 내 장치를 사용하여 몇 가지 테스트를 실행했습니다. 이 해킹은 요청에 쿠키를 포함하는 사파리 (모바일 및 데스크톱)를 제외한 거의 모든 브라우저에서 작동합니다.
짧은 대답은 예입니다. 아래 줄은 JS 문서 에서 가져온 것입니다.
쿠키는 한 번 일반적인 클라이언트 측 스토리지에 사용되었습니다. 이것이 클라이언트에 데이터를 저장하는 유일한 방법 일 때는 합법적 인 것이었지만 이제는 최신 스토리지 API를 사용하는 것이 좋습니다. 쿠키는 모든 요청과 함께 전송되므로 성능이 저하 될 수 있습니다 (특히 모바일 데이터 연결의 경우).