【问题标题】:Cookie not sending with Ajax requestCookie 未随 Ajax 请求一起发送
【发布时间】:2012-11-28 17:26:30
【问题描述】:

发现表单身份验证 Cookie 未在服务请求之间共享的问题。

Cookie '.ASPXAUTH' 已成功生成并从登录服务发送到浏览器,但未将 Cookie 发送到对同一服务的后续请求。

从云应用调用服务时发现使用 HTTP 1.1 的请求和响应是 HTTP 1.0

对 Fiddler 和其他工具的用户的更多观察:

适用于以下情况:

  1. 从本地开发系统运行服务和客户端网站
  2. 在同一 IIS 上托管服务和客户端(本地和远程)
  3. 基于 URL 访问,cookie 正确传输

不适用于以下情况:

  1. 在不同的 IIS 服务器中托管服务和客户端。
  2. IIS(或 Azure)中的托管服务和来自本地开发系统的客户端

更多细节: 两个请求都针对相同的服务,即相同的域、相同的协议、相同的端口号等。

更新于 20-12-2012 15:14:

  1. 正如我之前所说,登录功能在 Ajax 调用上正常工作,Fiddler 在响应时显示 Set-Cookie,但浏览器未读取 Cookie。

  2. 尝试在 $.Ajax() 的“完成:”事件上读取 document.cookies,但我无法读取 cookie。表示浏览器没有获取或持有 cookie(Fiddler 显示在相同的响应上)

问候, 罗摩克里希那

【问题讨论】:

  • 您是否检查过您的 cookie 用于相同的协议、域、端口和路径
  • 您使用了多少个实例?
  • 服务器(运行IIS)时间是否设置为当前时间?使用 Azure 或 IIS 时 cookie 的超时日期和时间是多少?
  • 另外,您是否尝试过在 $.ajax 代码中添加 xhrFields:{withCredentials: true} ?见api.jquery.com/jQuery.ajax

标签: cookies azure forms-authentication cloud


【解决方案1】:

使用 Forms Auth,您是否执行了一些操作以使 ASP.NET 会话脱离进程并脱离服务器?

您不能在服务器之间共享会话,因此您必须使用 SQL 会话状态提供程序并将会话放入 SQL Azure,或者使用 Windows Azure 缓存并提供会话状态提供程序将会话存储到缓存中。

我相信你擅长使用互联网搜索引擎,但这里有一个很好的文章列表(让会话退出进程):

【讨论】:

  • 感谢 astaykov 的回复,正如我所提到的,我不会在同一服务器上的同一云应用程序上的服务器之间共享会话。
猜你喜欢
  • 1970-01-01
  • 2019-01-17
  • 2013-10-18
  • 1970-01-01
  • 2016-07-25
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
相关资源
最近更新 更多