2010-08-04 3 views
1

자바 스크립트와 쿠키를 사용 중지하면 Amazon.com은 리디렉션없이 쿠키가 사용되지 않음을 감지합니다. 장바구니 링크를 클릭하면 장바구니 페이지에만 표시됩니다.쿠키는 * javascript 및 * 리디렉션없이 * 비활성화되어 있는지 어떻게 결정합니까?

아마존 닷컴이 ASP.NET을 사용하지 않는 것 같지만 어떻게 자바 스크립트 및 리디렉션을 사용하지 않고 ASP.NET을 사용하여 비활성화 된 쿠키를 감지 할 수 있습니까? 왕복 1 회에 쿠키가 사용 중지되었는지 여부를 감지 할 수 있습니까?

답변

0

자바 스크립트/쿠키 해제 페이지에서 구성을로드 한 다음 javascript를 사용하여 확인을 수행하고 필요할 경우 사용할 수있는 쿠키 기능을 설정할 수 있습니다.

0

예를 들어 Page_Init에 쿠키를 설정 한 다음 Page_PreRender에서 쿠키를 읽을 수 있습니까?

그게 가능 할지도 모르겠지만 그게 내가 생각할 수있는 유일한 방법입니다.

+0

나는 두 가지 방법이 동일한 요청에서 서버 측인 것처럼 작동하지 않을까 걱정됩니다.따라서 클라이언트가 Javascript 또는 쿠키를 사용하지 않도록 설정했는지 여부는 알 수 없습니다. –

2

나는 당신이 설명하는 것이 불가능하다고 믿습니다. 아마존은 그렇게하지 않는 것처럼 보입니다. 증명 :

  1. 해제 자바 스크립트
  2. 지우기 쿠키 (사용 가능하지만 그들을 떠나)
  3. 는 여기로 이동 : http://www.amazon.com/gp/cart/view.html/ref=gno_cart

당신은 메시지를 얻을 것이다 "웹 브라우저에서 쿠키를 사용하시기 바랍니다 계속하다." 그러나 페이지를 새로 고침하면 메시지가 사라집니다. 쿠키가 첫 번째보기에서 설정 되었기 때문입니다.

이것이 작동하지 않는 이유는 페이지 응답이 쿠키를 설정하면 서버가 다음 요청까지 제대로 설정되었다는 것을 알 수 없기 때문입니다. 물론 JavaScript를 사용하여이를 해결할 수는 있지만, 쿠키가 허용되는 브라우저에서 요청이 오는지 여부를 서버가 미리 알 수있는 방법은 없습니다.

+0

까다 롭고 불가능한 것은 아닙니다. 일반적으로 페이지 렌더링 당 하나 이상의 요청이 있습니다 (HTTP로 참조 된 모든 내용을 생각해보십시오). – qdot

+0

단계가 작동하는 이유를 이해하지만 FF와 IE에서는 자바 스크립트와 쿠키를 사용 중지하고 장바구니에 항목을 추가 한 후 다양한 항목으로 시도했지만 단일 게시물 만 추적됩니다. POST/gp/product/handle-buy-box/ref = dp_start-bbf_1_glance입니다. 어쩌면 디버거/프록시가 가져 오기/게시를 가로 챌 수 없습니까? – Steve

+0

@qdot : 맞습니다. iframe에서 중요한 모든 작업을 수행하는 한 iframe으로 처리 할 수 ​​있으며 iframe은 고유하게 코딩되어 요청을 구분할 수 있습니다. 그러나 아마존은 그와 같은 것을 할 수 없습니다. –

2

쿠키를 사용하기 위해 리디렉션 할 필요가 없습니다. 필요한 것은 지연된로드 내용뿐입니다.

는 기본적으로, 나는 다음과 같은 작업 것이라고 믿습니다

'/index.html를 가져 오기'응답이 쿠키를 설정한다 (그들은 헤더에 와서 index.html을 수신하고 렌더링 전에 저장됩니다) .

캐싱 문제가 발생하지 않고 이미지에 동적으로 응답하지 않으면 'GET/TinyImage.gif'라고 말하면서 쿠키를 확인할 수 있습니다.

그래서 마지막 문제는 TinyImage 요청에서 발견 한 내용을 사용자에게 어떻게 알리는 것입니까? 확실히 쉬운 일은 아니지만 간단한 태그 대신 IFrame을 사용하는 경우 본질적으로 단일 페이지 렌더링에 대해 두 가지 GET 요청을 할 수 있습니다.

또는 두 번째 GET에서 브라우저 설정을 확인할 때까지 실제로 매우 미친 듯이 실제로 첫 번째 GET을 멈출 수 있습니다. 이것은 일부 HTTP 마법사 용이지만 Comet (AJAX, Comet이 아닌) 주위에서 머리를 감쌀 수 있다면 편리 할 것입니다.

확실히 까다로울 수 있습니다. ASP.NET에서 그렇게하려고합니까? 약속 할 수는 없지만 공유하는 것은 깔끔한 일입니다.

+0

글쎄, "GET/TinyImage.gif"문제는 같은 브라우저에서 요청이 왔는지 확신 할 수 없다는 것입니다. 세션을 연관 짓는 쿠키가 없으면 고유 한 gif 또는 고유 한 iframe 타겟을 사용해야합니다. 상태를 유지하는 각 페이지 뷰를 사용하면 모든 렌더링이 복잡해집니다. 실제로 스티브는 아마존 (그리고 다른 모든 사람들)이하는 일을하는 것이 더 나을 것이라고 생각합니다. 상태 변경 요청 (항상 POST 여야 함)이있는 경우 적절한 쿠키를 확인하십시오. 쿠키가없는 경우 쿠키를 다시 사용하도록 요청하십시오. –

+0

중요한 포인트를 제기했습니다. 예, 렌더링이 복잡해질 수도 있습니다. 왜 내가 말하는 것일까 요? 내 코드 (C#, StringTemplate, SubSonic)에서 각 페이지 뷰마다 임의의 GUID를 생성하고 있습니다. 그들은 각각의 나가는 링크에 포함되어 있습니다. 간단하고 효과적인, 유일한 단점은 핵을 의미있는 캐시로 만드는 것입니다. 아니면 기능입니까? :) – qdot

관련 문제