如何解决Cors SET-COOKIE标头
由丹尼尔·W回答。
My mistake was that I was calling a HTTP server endpoint instead of it's HTTPS version.
我的问题:
我无法从第二个JS客户端登录:
- https:// localhost:4433正常工作(SET-COOKIE标头存在并且设置了cookie)
- https:// localhost不起作用(SET-COOKIE标头存在,但未设置cookie)
登录端点:
http:// localhost:8000 / home / login
响应标题:
Set-Cookie: .AspNetCore.Cookies=SomeCookieHere; expires=Sun,10 Sep 2022 14:12:52 GMT; path=/; secure; samesite=none; httponly
JavaScript:
$.post({
xhrFields: {
withCredentials: true
},crossDomain: true,type: 'POST',url: 'http://localhost:8000/home/login',data: {"userName":"userName","password":"password"},contentType: "application/x-www-form-urlencoded",dataType: "text/html",success: function(data) {}
});
C#:
authBuilder.AddCookie(options =>
{
options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.LoginPath = new PathString("/");
})
解决方法
您不能在非安全上下文中设置安全Cookie:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
具有Secure属性的cookie仅通过基于HTTPS协议的加密请求发送到服务器,而不会通过不安全的HTTP发送到服务器,因此中间人攻击者无法轻松访问。不安全的网站(URL中带有http :)无法使用Secure属性设置Cookie。
$.post({
// url: 'http://localhost:8000/home/login',// Can't use HTTP endpoint
url: 'https://localhost:4433/home/login',// This works
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。