SignalR cookie不是从客户端发送的

时间:2013-07-19 09:26:41

标签: asp.net jquery cookies signalr

我有一个从客户端发送的cookie,用作我的MVC Web服务的一部分,但是现在我已经将集线器集成到这个应用程序中,集线器不会发送cookie,而mvc应用程序会这样做。 / p>

现在,在阅读其他类似问题(并非有很多)之后,cookie域似乎应该受到指责,或者路径未设置。

目前我的系统有2个网络应用程序,即ui和服务。在我的开发环境中就是这样:

服务 http://localhost:23456/<some route>

UI http://localhost:34567/<some route>

因此,在上面的示例中,ui将向服务发送查询,在响应上获取授权cookie,该cookie在其他地方使用。

在此示例中,来自服务的cookie域为localhost,从我在其他问题上阅读和看到的不需要端口,它将自动只允许所有端口。

Are HTTP cookies port specific?

SignalR connection request does not send cookies

因此,在我看来,上面的cookie具有正确的域,并且路径设置为/,因此它应该可以工作。但是它不会在javascript的请求中发送它们。

我的请求是一个CORS请求,所以我不确定周围是否有任何怪癖,但所有正常的jquery ajax调用都可以通过cookies,任何想法使服务器正常运行?

OH我的饼干也是httponly,不确定这是否有所作为......

==编辑==

试图排除一些东西,关闭了httponly并且它仍然拒绝将cookie发送到服务器,我还注意到一些未解决的cookie问题,提到在某个地方添加以下代码以使ajax行为确定方式:

$.ajax({
                xhrFields: {withCredentials: true}
            })

尝试使用它但仍然没有运气,所以我没有想法。

1 个答案:

答案 0 :(得分:2)

我提出了一个问题,因为&lt; SignalR的第2版测试版与CORS和cookie有关。

https://github.com/SignalR/SignalR/issues/2318

但是,您可以通过附加:

手动修复此问题

xhrFields: {withCredentials: true}

到jquery.signalr - * .js中的所有ajax请求,这将通过CORS发送cookie,虽然我不知道这是否对旧浏览器或IE有任何不利影响。