我有一个从客户端发送的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}
})
尝试使用它但仍然没有运气,所以我没有想法。
答案 0 :(得分:2)
我提出了一个问题,因为&lt; SignalR的第2版测试版与CORS和cookie有关。
https://github.com/SignalR/SignalR/issues/2318
但是,您可以通过附加:
手动修复此问题 xhrFields: {withCredentials: true}
到jquery.signalr - * .js中的所有ajax请求,这将通过CORS发送cookie,虽然我不知道这是否对旧浏览器或IE有任何不利影响。