[英]Cookies not persisting with external sites
當我從Google擴展程序通過GitHub.com調用服務器時,Asp.net核心會話始終為null。
如果我通過自己的localhost:8080網站進行完全相同的操作,則可以正常工作,但似乎來自外部域的請求不會保留該會話的cookie。
Startup.cs
services.AddSession(options => new SessionOptions
{
Cookie = new CookieBuilder
{
SameSite = SameSiteMode.None,
IsEssential = true,
Name = ".onboardor",
}
});
app.UseSession(new SessionOptions
{
Cookie = new CookieBuilder
{
SameSite = SameSiteMode.None,
IsEssential = true,
Name = ".onboardor",
}
});
不知道為什么它們是傳遞會話選項的兩種方法...
public IActionResult Test()
{
var value = HttpContext.Session.GetString("Test");
HttpContext.Session.SetString("Test", "randomValue");
return null;
}
JS:
fetch("https://localhost:8080/test", {
credentials: "include",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
method: "get",
});
您可以在上圖中看到cookie實際上在那里,但是刷新頁面時它似乎立即被刪除了。
弄清楚了。 會話無法正常工作,因為對於CORS,您需要將Cookie的相同站點模式設置為無。
app.UseCookiePolicy(new CookiePolicyOptions
{
MinimumSameSitePolicy = SameSiteMode.None
});
app.UseSession(new SessionOptions {
Cookie = new CookieBuilder
{
Name = ".AspNetCore.Session",
SameSite = SameSiteMode.None,
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.