跨域XMLHttpRequest不处理ASP.NET_SessionId cookie-可能是什么情况?

问题描述 投票:1回答:3

我已经在标题问题上苦苦挣扎了几天,没有成功。我有一个需要基本身份验证的ASP.NET MVC 3 REST服务器。我想编写JS API,使用XMLHHttpRequest以AJAX方式访问此服务器。

对于包括AJAX的任何HTTP请求的响应,服务器添加"Set-Cookie: ASP.NET_SessionId=<session id here>; path=/; HttpOnly"标头-可以。但是似乎Set-Cookie标头不会以任何方式被浏览器处理-因此,即使我使用相同的XMLHttpRequest对象执行下一个请求,cookie的设置也不正确,因此我无法维护会话。我可能做错了什么?

我的脚本已经在Firefox 6和Safari 5中进行了测试,并且在两个浏览器中都遇到相同的问题。

asp.net ajax session cross-domain
3个回答
1
投票

尽管我没有找到解决原始问题的任何相关解决方案,但通过为ASP.NET会话和身份验证工件实现自定义传输,我已经能够克服它。

[通常,在我的解决方案中,所有ASP.NET工件都作为附加到响应内容的JSON字符串从服务器传输到客户端,以及作为自定义HTTP标头从客户端传输到服务器。

不知道我没有通过这种方式重新发明轮子,但至少它能起作用...


0
投票

您的主题提到您正在使用CORS。如果是这样,请尝试在响应中添加以下标头:

Access-Control-Allow-Credentials: true

0
投票

请确保您在Chrome地址栏中没有此图标。他们开始阻止来自其他域的cookie,因此您的会话ID丢失了。

Chrome blocks 3rd party cookies

© www.soinside.com 2019 - 2024. All rights reserved.