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