我的应用程序在Chrome,Firefox,Safari和Opera上运行良好,但在Internet Explorer 11上失败(我还没有尝试过早期版本)。基本上,我发现我无法登录。我已将问题缩小到cookie的问题。在登录尝试时,我很好地接通了服务器,响应与任何其他浏览器完全相同。但无论出于何种原因,即使设置了Set-Cookie
标头,也不会保存cookie并在下次请求时将其发送到服务器。我的应用程序有(大部分)RESTful后端,因此对大多数请求进行身份验证。这显然是失败的,因为没有设置cookie!
无论是从localhost还是从真实服务器提供,此问题仍然存在。我应该提一下, 是一个交叉来源请求,但是正确的标题已经存在(并且它们适用于其他浏览器)
响应标头(从localhost提供时)如下:
Response HTTP/1.1 200 OK
Access-Control-Allow-Credentials true
Access-Control-Allow-Headers accept, content-type
Access-Control-Allow-Methods POST, PATCH, DELETE
Access-Control-Allow-Origin http://localhost:8000
Cache-Control no-cache,no-store
Content-Length 68
Content-Type application/json
Date Thu, 05 Mar 2015 20:00:20 GMT
Frame-Ancestors none
Server waitress
Set-Cookie session-id=ZqANyJ4KRUFoOaVgtGs/hcX+fxjMcCVM0kdRqF4riHglfAeBJJK56X9wn0XsNdPwUg; Domain=; HttpOnly;
Strict-Transport-Security max-age=31536000;
X-Frame-Options deny
我无法弄清楚为什么这不仅仅适用于IE11!该应用程序不在iframe
中,当我点击网络请求时,cookie实际上会出现在IE开发人员工具的Cookie标签中,但随后不会随后一起发送。
我尝试的一些解决方案是:
Cache-Control
标题HttpOnly
标志Domain
标记添加到Cookie(设置为localhost
或127.0.0.1
)X-Frame-Options
,Frame-Ancestors
和Strict-Transport-Security
全部失败。想法?