簡體   English   中英

Cookie不會在外部網站上持續存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM