2012-02-08 3 views
3

Firefox 및 Chrome의 특정 브라우저 문제를 해결하기 위해 머리를 갈아입니다. 이 문제를 해결하기 위해 많은 시간을 할애하여 마침내이 문제를 조사하기 위해 여기 전문가의 라이브 데모를 만들려고 생각했습니다.302 리디렉션을 통해 FireFox/Chrome에서 쿠키를 읽을 수 없지만 IE에서 작동합니다.

1 단계 :

찾아 http://www.nkmekal.com/createcookie.aspx

내가 문제를 복제하는 파이어 폭스/크롬을 사용하시기 바랍니다 두 도메인 www.nkmekal.comwww.incessantcoding.com

(희망이 떨어져 지불) 이 페이지는 단지 쿠키를 생성합니다.

// In On_Load of nkmekal.com/createCookie.aspx 
    HttpCookie cookie = new HttpCookie("DisCookie"); 
    cookie.Value = "djdjd77676ydjdndgdidjkdnhf"; 
    cookie.HttpOnly = true; 
    cookie.Expires = DateTime.Now.AddDays(1); 
    Response.Cookies.Add(cookie); 
    lblCookieInfo.Text = string.Format("<b>Cookie Name:</b> {0} <br/><br/> <b>Cookie Value:</b> {1} <br/><br/> <b>Cookie Expires On:</b> {2}", cookie.Name, cookie.Value, cookie.Expires); 

2 단계 :

이제 기본적으로 간단한 302 http://www.nkmekal.com/ReadCookie.aspx로 리디렉션하지 http://www.incessantcoding.com/GoTonkmekal.aspx로 이동 브라우저에서 새 탭을 열고 아래입니다 아래는 쿠키를 생성하는 코드는 이 리디렉션을 수행하는 코드 : 나는 아래의 메시지가 표시 그러나

// In On_Load of incessantcoding.com/GoTonkmekal.aspx 
protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Redirect("http://www.nkmekal.com/ReadCookie.aspx"); 
} 

: (3 단계에서 ReadCookie.aspx 페이지의 코드를 참조하십시오)를

,691,363

(210)는 "어떤 쿠키를 찾을 수 없습니다 :("

도메인 www.nkmekal.com는 당신이 www.nkmekal.com/를 탐색 한 경우 이전에 만든 쿠키를 읽을 수 없음을 의미합니다 createcookie.aspx

3 단계 :

그리고 페이지 http://www.nkmekal.com/ReadCookie.aspx 단지 및 표시 쿠키 데이터 (1 단계)을 위에서 만든 쿠키를 읽으려고합니다. 아래는 쿠키를 읽으려고하고

// In On_Load of nkmekal/ReadCookie.aspx 
    HttpCookie cookie = Request.Cookies["DisCookie"]; 
    if (cookie != null) 
    { 
     // Resetting expiry date because the browser never sends expiry date to Server, 
     // as cookies expiration dates are irrelevant to servers. 
     cookie.Expires = DateTime.Now.AddDays(1); 
     lblCookieInfo.Text = string.Format("<b>Yes! I found a cookie</b> <br><br><b>Cookie Name:</b> {0} <br/><br/> <b>Cookie Value:</b> {1} <br/><br/> <b>Cookie Expires On:</b> {2}", cookie.Name, cookie.Value, cookie.Expires); 
    } 
    else 
    { 
     lblCookieInfo.Text = "No Cookie Found :("; 
    } 

위의 단계는 IE에서가 아니라 파이어 폭스/크롬에서 잘 작동 페이지에 표시 코드입니다. 당신은 두 도메인의 소스 코드를 들여다 봐도하려면

또한, 당신은 왜이 작업을 수행하려고

http://dl.dropbox.com/u/1248159/incessantcoding.zip

http://dl.dropbox.com/u/1248159/nkmekal.zip

에서 다운로드 할 수 있습니다 :

그래서이 작업을 수행하려는 이유는 도메인에서 수행해야 할 특정 작업이 있다는 것입니다. 쿠키가 www.nkmekal에서 생성 된 경우 www.incessantcoding.com.com

302 리디렉션을 사용하는 이유는 크로스 도메인 쿠키를 읽을 수 없기 때문에 적절한 도메인에서만 쿠키를 읽으려고하기 때문입니다 (nkmekal.com은 쿠키 만 읽을 수 있기 때문에).

도움이나 제안이 도움이 될 것입니다.

업데이트 : 1 단계와 3가 (2 단계를 떠나)을 수행하는 경우 이 또한 매우 흥미롭게도, 쿠키 값이 제대로 파이어 폭스와 크롬에서 읽어. 그것만이 작동하지 않는 302 가지 방법.

+0

그건 사실 예는 도메인 간 쿠키를 읽을 수 없습니다 ... – Madhu

+0

예! DisCookie 쿠키 값 : 나는 쿠키 쿠키 이름을 발견 쿠키에 만료 djdjd77676ydjdndgdidjkdnhf : 2012년 2월 8일 오후 11시 3분 8초 –

+0

나를 위해 일했다. firefox 9.1, brgds –

답변

0

마침내 대안을 찾아 냈습니다. 정상적으로 작동합니다!

경우 nkmekal.com 난 후, 302가 쿼리 문자열 값으로 암호화 된 토큰 incesscantcoding.com로 리디렉션 을 issueing하고 ... DisCookie를 만듭니다 여기 내가했던 한 것입니다 incessentcoding.com는 도메인에 대한 쿼리 문자열 값을 기준으로 자신의 DisCookie을 만드는, 그래서 것 내가 쿠키가 존재하는지 알고 싶다면 nkmekal.com 난 그냥 DisCookie에 대한 쿠키 컬렉션을 볼 것이다incessantco ding.com ...이 시나리오를 테스트 한 결과 파이어 폭스와 크롬 모두에서 작동하는 것으로 보입니다 ...

이후 Google이 사용자가 서비스 웹 사이트 중 하나에 로그인 할 때 비슷한 일을한다는 것을 알았습니다. ..이 도움이

희망 ...

1

쿠키를 저장할 때 도메인 간 데이터 교환을 방지하기 위해 웹 사이트의 도메인도 저장됩니다. 즉, 한 호스트에서 쿠키를 저장하면 다른 도메인에서 쿠키를 읽을 수 없습니다 도대체 무엇이.

protected void Page_Load(object sender, EventArgs e) 
{ 
    HttpCookie cookie = Request.Cookies["DisCookie"]; 
    if (cookie != null) 
    { 
     Response.Redirect("http://www.nkmekal.com/ReadCookie.aspx?data=" + cookie.Value); 
    } 

    else Response.Redirect("http://www.nkmekal.com/ReadCookie.aspx"); 
} 

을 그리고 단지 ReadCookie.aspx에 data를 사용

하지만, 당신은 당신의 원래 호스트에서 URL을 통해 쿠키의 데이터를 전달할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 귀하가 제안한 것을 시도해 보았습니다. 그러나 구현 내용을 면밀히 살펴보면 nkmekal.com이 쿠키를 호스트하기 때문에 302 쿠키를 nkmekal.com으로 리디렉션합니다. ...그래서 저는 다른 쿠키를 읽으 려하지 않습니다 ... – NiK