我正在使用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。但请求在同一个域上,所以这没有多大意义。
答案 0 :(得分:2)
原来我不太了解饼干。浏览器似乎无法像{cookie}域一样处理localhost
等TLD。因此,我保留了域未定义,因此cookie将默认为请求的域。
但是,路径参数需要设置为/
才能确保在所有请求中发送cookie。
一旦我做了这些更改,一切都按预期工作,我的cookies在SignalR中清晰可见。