Jquery 未发送信号器Cors Cookie
我有一个signarjavascript客户端()与signarapi()对话。信号机版本2.2.0。我需要通过cookie将令牌传递给Api。虽然这在dev中有效,但在部署到Azure应用程序服务时不起作用。cookie未与请求一起发送 JavaScript代码Jquery 未发送信号器Cors Cookie,jquery,azure,cookies,signalr,cross-domain,Jquery,Azure,Cookies,Signalr,Cross Domain,我有一个signarjavascript客户端()与signarapi()对话。信号机版本2.2.0。我需要通过cookie将令牌传递给Api。虽然这在dev中有效,但在部署到Azure应用程序服务时不起作用。cookie未与请求一起发送 JavaScript代码 //Set cookie document.cookie = "DomainAToken=" + token + "; domain=domainA.com; path=/"; //call signalr hub $.connec
//Set cookie
document.cookie = "DomainAToken=" + token + "; domain=domainA.com; path=/";
//call signalr hub
$.connection.hub.start({
withCredentials: true
}).done(init);
我正在Api上设置CORS策略。Owin启动:
var policy = new CorsPolicy
{
AllowAnyHeader = true,
AllowAnyMethod = true,
SupportsCredentials = true
};
policy.Origins.Add("https://domainA.com");
app.Map("/signalr", map =>
{
map.UseCors(new CorsOptions
{
PolicyProvider = new CorsPolicyProvider
{
PolicyResolver = context => Task.FromResult(policy)
}
});
map.RunSignalR(hubConfiguration);
});
返回响应头,如下所示
访问控制允许凭据:true
访问控制允许来源:
在localhost中它可以工作,但在Azure上,没有设置cookie。没有办法让Cookie与signalr跨域工作吗?只是遇到了一些可能的原因 如果您在默认的azurewebsites.net域上使用此功能,则它无法工作的原因是浏览器阻止在某些域上设置cookie。有关参考信息,请参见: 答案也是如此:
是的,使用自定义dns是我解决问题的方法。它不适用于azurewebsites.net。正如马可所提到的,如果你把答案的关键部分贴出来,我很乐意把它标记为正确答案。