【问题标题】:SignalR connection request does not send cookiesSignalR 连接请求不发送 cookie
【发布时间】:2012-12-24 11:31:40
【问题描述】:

我正在使用 ASP.NET Web API 和 SignalR 构建一个 Web 应用程序。我对 HTTP 有很好的理解,但这个问题超出了我的范围。

目前,我正在为此 API 的所有 AJAX 请求设置一个 cookie。对 API 的后续 AJAX 请求会毫无问题地发送 cookie。

但是,我希望此 cookie 也可用于建立连接的 SignalR 请求,但根据 Chrome,cookie 不会在这些请求中发送。我将 cookie 设置为 HTTPOnly。目前,一切都在本地运行;所有请求都转到localhost:port。 cookie 上的域也被设置为 localhost

我的 SignalR 连接如下所示:

var connection = $.connection("/updates");
/* set handlers here */
connection.start(function () {
    console.log("connection started!");
});

Chrome 似乎认为这是一个 CORS 请求并保留了 cookie。然而,请求在同一个域上,所以这没有多大意义。

【问题讨论】:

  • 您是否从您的集线器请求 cookie?比如:cookie = Context.RequestCookies["sid"];?
  • 我正在使用普通的旧 PersistantConnections。问题原来是我的 cookie 是如何配置的。看我的回答。不过,感谢您的建议。
  • 没问题。不过,您应该接受自己的答案。

标签: javascript ajax http cookies signalr


【解决方案1】:

原来我对 cookie 的理解还不够好。浏览器似乎无法处理像 localhost 这样的顶级域名作为 cookie 域。因此,我将域未定义,以便 cookie 将默认为请求的域。

但是,需要将路径参数设置为/,以确保在所有请求中都发送 cookie。

完成这些更改后,一切都按预期运行,并且我的 cookie 在 SignalR 中清晰可见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 2013-03-31
    • 2021-10-27
    • 2013-06-08
    • 2016-04-14
    • 2016-08-03
    相关资源
    最近更新 更多