2013-08-13 31 views
5

Tôi gặp sự cố sau với IE10 (các trình duyệt khác như Firefox, Opera, Chrome và các phiên bản IE cũ hơn dường như không bị ảnh hưởng.IE10 theo chuyển hướng HTTP 302 hai lần

(1) Trình duyệt truy cập trang phản hồi với một HTTP 302 chuyển hướng đến một trang web khác nhau (theo thứ tự để thực hiện một đăng nhập):

Yêu cầu:

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: ... 

đáp ứng:

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 theo chuyển hướng này. Các máy chủ đặt ra một số coookies và chuyển hướng trở lại trang web gốc:

Yêu cầu:

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 

đáp ứng:

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) Đến đây, mọi thứ dường như bình thường. Tuy nhiên, IE10 nay bỏ qua các phản ứng vừa nhận được và sau chuyển hướng cùng một lần nữa:

Yêu cầu:

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: ... 

Máy chủ này phát hiện yêu cầu trùng lặp này và từ chối yêu cầu, đáp ứng với một trang lỗi (Tôi biết HTTP GET nên là idempotent, nhưng đó là cách trang web này hoạt động).

Đó là lý do tại sao IE10 bỏ qua phản hồi ban đầu và đưa ra cùng một yêu cầu một lần nữa (mặc dù không có tiêu đề 'Pragma: no-cache'). Bạn còn ý kiến ​​nào không?

+0

Bạn có thể chia sẻ ảnh chụp Fiddler thể hiện hành vi này không? IE có thể làm một cái gì đó như thế này nếu kết nối phản hồi là RST trước khi nó được đọc, nhưng điều đó dường như không xảy ra. – EricLaw

Trả lời

0

Tôi vừa tìm thấy giải pháp (sau khi xem bài đăng của bạn). Nó được mô tả ở đây http://support.microsoft.com/kb/2691205

Trong trường hợp của tôi, tôi đã mở một hộp thoại (sử dụng jquery) có chứa khung nội tuyến. Thay vì đặt src vào iframe (ví dụ), tôi đã thêm một số javascript vào hộp thoại bật lên

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!!!! 

}); 
Các vấn đề liên quan