【发布时间】:2021-01-08 17:11:08
【问题描述】:
丹尼尔 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("/");
})
【问题讨论】:
-
在 JS 中你有
http://localhost:8000/。请解释您问题中三个目标之间的区别。您从哪个站点执行 ajax 请求,您从哪个站点发送 cookie? -
Daniel,- 服务器:localhost:8000/home/login - 客户端 1:localhost:4433 是一个 ASP-Vue 客户端,工作正常 - 客户端 2:localhost - 一个简单的 JS 客户端,不工作
-
如果你在端口 4433 上关闭服务器并在端口 443 上重新启动它,它将工作。
标签: authentication cross-domain setcookie samesite