2

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

现在在阅读了其他类似的问题(不是很多)之后,cookie 域似乎是罪魁祸首,或者路径没有设置。

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

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

用户界面 http://localhost:34567/<some route>

所以在上面的例子中,用户界面将向服务发送一个查询,在响应中获得一个授权cookie,它在其他地方使用。

在这个例子中,来自服务的 cookie 域是localhost,从我在其他问题上阅读和看到的内容来看,不需要端口,它会自动只允许所有端口。

HTTP cookie 端口是特定的吗?

SignalR 连接请求不发送 cookie

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

我的请求是 CORS 请求,所以我不确定是否有任何怪癖,但所有正常的 jquery ajax 调用都可以通过 cookie 很好地到达服务器,有什么想法吗?

哦,我的 cookie 也是 httponly,不确定这是否会有所不同......

== 编辑 ==

尝试排除一些东西,关闭了 httponly 并且它仍然拒绝将 cookie 发送到服务器,我还注意到一些突出的 cookie 问题,其中提到在某处添加以下代码以使 ajax 以某种方式运行:

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

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

4

1 回答 1

2

我提出了一个问题,因为 SignalR 的 < version 2 beta 存在与 CORS 和 cookie 相关的潜在问题。

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

但是,您可以通过附加以下内容手动解决此问题:

xhrFields: {withCredentials: true}

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

于 2013-07-20T12:52:47.250 回答