我有一个使用 JQuery AJAX 的网站。有了这个 JQuery 代码
$.post("/ajax/getsomedata.aspx", {'id': id },
function(data)
{
dosomething(data);
}
);
当我运行这个时无cookie=“假”, id出现在申请表。当我设置无cookie=“真”, id不再在申请表.
更新,我做了什么
我添加了对 Response.ApplyAppPathModifier() 的调用以保留数据并避免自动重定向。我排除 **Diago(( 并删除我自己的,因为他的参考文献对正在发生的事情提供了一些内幕。我喜欢单独域的想法,但我不能在这里这样做。
这是更新后的代码:
$.post("<%=Response.ApplyAppPathModifier("/ajax/getsomedata.aspx")%>",
{'id': id },
function(data)
{
dosomething(data);
}
);
根据MSDN http://msdn.microsoft.com/en-us/library/system.web.httpresponse.applyapppathmodifier.aspx Response.ApplyAppPathModifier()如果您处于无 cookie 会话状态,则添加会话 ID;如果不处于无 cookie 会话状态,则返回未更改的 URL。
由于没有会话 ID,ASP.NET 创建一个新会话并执行重定向(从而剥离任何表单数据)。
我最近也遇到了同样的问题。这是使用无 cookie 会话的四个缺点之一。当访问服务器时,请求将被重写,并且请求变量将被删除。当使用 ASP.Net 使用 Web 服务和 POST 请求时,这可能会非常痛苦。使用 GET 时效果很好。
使用普通帖子您也会遇到类似的问题。有一篇文章here http://www.developer.com/net/asp/article.php/2216431这解释了如何做到这一点。This http://msdn.microsoft.com/en-us/library/aa479314.aspxMSDN 文章还详细讨论了其缺点。
最好的解决方案是将您的服务放在 IIS 虚拟站点的单独域中,而不使用无 cookie 会话。
在无 cookie 会话中使用表单身份验证也是一个有趣的挑战。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)