IE/Fiddler에 Chrome 및 FF/Live HTTP 헤더와 다른 쿠키 설정/삭제가 표시되는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1071365

문제

나는 PHP에서 부분적으로 상속된 웹 응용 프로그램을 가지고 있으며 Fiddler를 사용하여 살펴본 후에 이전보다 약간 더 많은 데이터를 얻었습니다.내가 해결하려는 문제는 IE6/8에서는 원치 않는 로그아웃이 발생하지만 FF/Chrome에서는 발생하지 않는 것입니다.사용자가 다른 페이지 사이를 클릭하면 로그인 데이터 쿠키가 사라집니다.

FF와 FF에서는 동작이 다릅니다.IE와 보고되는 정보는 Fiddler(/IE)와 Live HTTP Headers(/FF)와 거의 똑같은 방식으로 다릅니다.

Firefox에서 쿠키는 PHP가 지정하는 것처럼 처리되는 것으로 보입니다.사용자가 로그인하여 "기억하기"를 체크하면 생성되며, 사용자가 로그아웃 페이지를 방문하는 경우에만 삭제되며 유효기간은 2주입니다.라이브 HTTP 헤더는 다른 것을 보고하지 않습니다.사용자가 페이지 사이를 클릭할 때 쿠키가 변경되거나 삭제된 것으로 보고되지 않습니다.

그러나 IE에서는 사용자가 다른 페이지 사이를 클릭하면 사라지고 Fiddler는 다음과 같이 보고합니다.

Cookies / Login
    Set-Cookie: *******=deleted; expires=Sun, 29-Jun-2008 21:07:46 GMT; path=; domain=.********.com
    Set-Cookie: *******=deleted; expires=Sun, 29-Jun-2008 21:07:46 GMT; path=; domain=.********.com

('삭제됨'은 Fiddler의 출력에서 ​​문자 그대로 인용되었습니다.내 코드에는 두 값 중 하나가 '삭제됨'이라는 마법 문자열로 설정된 위치가 없습니다.)

IE와 Firefox는 사이트가 말하는 방식에 대해 서로 다른 해석을 할 뿐만 아니라 Fiddler와 HTTP Live Header는 사이트가 수행하는 작업에 대해 상응하는 서로 다른 버전을 보고합니다.

IE와 '삭제'에는 특별한 것이 있나요?이상하게 들릴 수도 있지만 IE는 페이지를 볼 때마다 쿠키가 다시 활성화되기를 원합니까?

그리고 사용자가 로그아웃 URL을 방문하여 요청하지 않는 한 문제의 쿠키가 서버에 의해 삭제되지 않도록 IE를 달래려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

결국 찾아낸 내용은 다음과 같습니다.Firefox와 IE는 누락된 문서가 만료일 14일 이내에 있을 때 캐싱을 다르게 처리했기 때문에 다르게 동작했습니다.설정된 헤더입니다.

Firefox는 분명히 누락된 데이터가 있는지 한 번 확인한 다음 다시 요청하지 않았습니다.

반면 IE는 스타일시트가 잘못된 경로를 제공하고 404 페이지를 얻었으며 사용자 정의 404 페이지에서 사용자 로그아웃을 유발하는 상용구 초대를 수행하여 항목을 계속 확인했습니다(아마도 최고의 상용구는 아닐 것입니다). ).스타일시트가 캐시된 것 같은데 IE에서는 누락된 항목을 계속 요청했습니다.

따라서 캐싱 차이와 간접 포함, 404 페이지 동작이 포함되었습니다.

"삭제"가 무엇에서 유래했는지 아직도 모르겠습니다.(쿠키 문자열을 빈 값으로 설정하면 PHP는 "삭제됨"이라는 단어를 제공합니까?)

다른 팁

호스트에 밑줄이 있으면 IE는 쿠키를 설정하지 않지만 여기서는 문제가 되지 않습니다.

Fiddler는 아무 것도 "발명"하지 않습니다. 쿠키를 "삭제됨" 값으로 설정하는 HTTP 헤더가 있다고 말하면 서버가 문자 그대로 해당 내용을 보냈다는 의미입니다.

서버에서 쿠키를 삭제하게 만드는 잘못된 요청이 있는지 살펴보고 싶을 수도 있습니다.예를 들어, 다른 스레드에서 누군가 소스가 ""(빈 문자열)인 IMG 태그로 인해 IE가 사이트 루트에 대한 요청을 보내고 해당 홈페이지를 방문하면 로그인 쿠키가 삭제된다는 점을 언급했습니다.

IE6/7/8은 현재 호스트당 쿠키 50개로 제한되어 있지만 여기서도 그 한계에 도달하지 않습니다.

문제의 페이지 URL에 밑줄이 포함되어 있나요?IE가 도메인 이름 사양을 따르지 않는 도메인 이름의 쿠키에 문제가 있었던 것을 기억합니다(RFC 1035 섹션 2.3.1을 확인하세요).

또한 도메인당 쿠키 크기 및 쿠키 수와 관련하여 IE에는 일부 제한이 있습니다(어디서?).IE6에서는 도메인당 모든 쿠키의 최대 크기가 4095바이트이고 도메인당 쿠키가 20개라는 제한이 있다고 생각합니다.

IE가 쿠키를 추적하지 못할 수 있는 헤더 기반 리디렉션을 사용하는 경우에도 문제가 발생할 수 있습니다.

그런데.두 개의 Set-Cookie 지시문에 제공한 날짜는 이전 로그에서 가져온 것인지 아니면 서버가 실제로 만료 날짜가 과거인 쿠키를 설정했는지(일반적인 표현 방식입니다.)"안녕하세요 브라우저에서 이 쿠키를 삭제하세요. 이 쿠키는 이미 며칠 전에 만료되었기 때문입니다.")

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top