2013-08-13 17 views
5

Im przeżywa następujący problem z IE10 (innych przeglądarek, takich jak Firefox, Opera, Chrome i starszych wersjach IE nie wydają się być naruszone.IE10 dodaje HTTP 302 przekierowanie dwukrotnie

(1) Przeglądarka uderza stronę, która odpowiada z HTTP 302 przekierowanie do innej strony (w celu przeprowadzenia Login):

Zapytanie:

GET https://www.domain-one.de/startpage.aspx?... HTTP/1.1 
Accept: text/html, application/xhtml+xml, */* 
Accept-Language: de-DE 
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) 
Accept-Encoding: gzip, deflate 
DNT: 1 
Host: www.domain-one.de 
Pragma: no-cache 
Connection: Keep-Alive 
Cookie: ... 

Response:

HTTP/1.1 302 Found 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Location: https://login.domain-two.com/login?tid=hGZmFb77-9VyiwfkhIXIRMDp 
Server: Microsoft-IIS/7.5 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
P3P: CP="NOi CURa TAIa OUR NOR UNI" 
Date: Tue, 13 Aug 2013 19:01:22 GMT 
Content-Length: 190 

<html><head><title>Object moved</title></head><body> 
<h2>Object moved to <a href="https://login.domain-two.com/login?tid=hGZmFb77-9VyiwfkhIXIRMDp">here</a>.</h2> 
</body></html> 

(2) IE wykonuje to przekierowanie. Serwer ustawia pewne coookies i przekierowuje z powrotem do oryginalnej strony:

Zapytanie:

GET https://login.domain-two.com/login?tid=hGZmFb77-9VyiwfkhIXIRMDp HTTP/1.1 
Accept: text/html, application/xhtml+xml, */* 
Accept-Language: de-DE 
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) 
Accept-Encoding: gzip, deflate 
Host: login.domain-two.com 
DNT: 1 
Cookie: ... 
Pragma: no-cache 
Connection: Keep-Alive 

Response:

HTTP/1.1 302 Found 
Date: Tue, 13 Aug 2013 19:01:22 GMT 
Server: Apache 
P3P: CP="NOI CURa TAIa OUR NOR UNI" 
Location: https://www.domain-one.de/BackFromLogin.aspx?TID=hGZmFb77-9VyiwfkhIXIRMDp 
Content-Length: 277 
Keep-Alive: timeout=2, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=iso-8859-1 

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>302 Found</title> 
</head><body> 
<h1>Found</h1> 
<p>The document has moved <a href="https://dwww.domain-one.de/BackFromLogin.aspx?TID=hGZmFb77-9VyiwfkhIXIRMDp">here</a>.</p> 
</body></html> 

(3) Do tutaj, wszystko wydaje się normalne. Jednak IE10 teraz ignoruje odpowiedź właśnie otrzymał i podąża tą samą przekierowanie ponownie:

Zapytanie:

GET https://login.domain-two.com/login?tid=hGZmFb77-9VyiwfkhIXIRMDp HTTP/1.1 
Accept: text/html, application/xhtml+xml, */* 
Accept-Language: de-DE 
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) 
Accept-Encoding: gzip, deflate 
Host: login.domain-two.com 
DNT: 1 
Connection: Keep-Alive 
Cookie: ... 

Ten serwer wykrywa ten duplikat żądanie i odrzuca go, odpowiadając na stronę błędu (wiem HTTP GET powinien być idempotentny, ale tak działa ta strona).

Nie rozumiem, dlaczego IE10 ignoruje oryginalną odpowiedź i ponownie wysyła to samo żądanie (aczkolwiek bez nagłówka "Pragma: no-cache"). Masz jakiś pomysł?

+0

Czy możesz podzielić się przechwytywaniem Fiddlera, które demonstruje to zachowanie? IE może zrobić coś takiego, jeśli połączenie z odpowiedzią ma wartość RST, zanim zostanie odczytane, ale wydaje się to mało prawdopodobne. – EricLaw

Odpowiedz

0

Właśnie znalazłem rozwiązanie (po zobaczeniu twojego ogłoszenia). To jest opisane tutaj http://support.microsoft.com/kb/2691205

W moim przypadku otworzyłem okno dialogowe (używając jquery), które zawierało element iframe. Zamiast umieszczać src w elemencie iframe (np.), Dodałem trochę javascriptu do okna dialogowego popup

html = '<iframe id="myIframe">iframe not supported</iframe>'; 

$('#' + dialogId).append(html); 
$('#' + dialogId).dialog({ 
title: 'SOME TITLE', 
open: function() { $('#' + dialogId + 'iframe').attr('src', url); } //IE10 HACK to  prevent double request!!!! 

}); 
Powiązane problemy