SignalR connection request does not send cookies

六月ゝ 毕业季﹏ 提交于 2019-12-24 04:01:37

问题


I am building a web application using ASP.NET Web API and SignalR. I have a pretty good understanding of HTTP but this problem is beyond me.

Currently, I am setting a cookie on all AJAX requests to this API. Subsequent AJAX requests to the API send the cookie without issue.

However, I would like this cookie to also be used in the SignalR requests that establish a connection, but according to Chrome, the cookie is not being sent in these requests. I have the cookie set as HTTPOnly. Currently, everything is running locally; all requests go to localhost:port. The domain on the cookie is being set to localhost as well.

My SignalR connections look like this:

var connection = $.connection("/updates");
/* set handlers here */
connection.start(function () {
    console.log("connection started!");
});

It seems as if Chrome thinks this is a CORS request and is withholding the cookies. The requests are on the same domain however, so this does not make much sense.


回答1:


Turns out I don't understand cookies well enough. Browsers seem to have trouble handling TLDs like localhost as the cookie domain. Therefore, I left the domain undefined, so that the cookie will default to the domain of the request.

However, the path parameter needed to be set to / in order to make sure the cookie is sent in all requests.

Once I made these changes, everything worked as expected, and my cookies were plainly visible in SignalR.



来源:https://stackoverflow.com/questions/14251822/signalr-connection-request-does-not-send-cookies

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!