2

我正在使用 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。然而,请求在同一个域上,所以这没有多大意义。

4

1 回答 1

2

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

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

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

于 2013-01-10T22:22:34.687 回答