我正在使用 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还不够了解。浏览器似乎无法将 localhost
之类的 TLD 作为 cookie 域来处理。因此,我未定义域,以便 cookie 将默认为请求的域。
但是,需要将路径参数设置为/
,以确保在所有请求中发送cookie。
完成这些更改后,一切都按预期运行,并且我的 cookie 在 SignalR 中清晰可见。
关于javascript - SignalR 连接请求不发送 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14251822/