1. 程式人生 > 其它 >谷歌瀏覽器新版本Chrome 80以上版本預設SameSite導致jquery ajax跨域登入狀態失效的問題

谷歌瀏覽器新版本Chrome 80以上版本預設SameSite導致jquery ajax跨域登入狀態失效的問題

文章參考:https://davidchen93.blog.csdn.net/article/details/104844667?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.essearch_pc_relevant

解決的辦法:

在提供授權登入的方法中,設定響應頭資訊;

 Response.Headers.Add("Set-Cookie", $"uid={str}; SameSite=None; Secure=True;Path=/");

其中 uid為要共享的cookie名稱,str為cookie的值。 同時設定SameSite屬性為None;必須設定 Secure=True.

同時,提供授權的應用必須採用 https。 http無效。

完整方法示例:

  public string Get(string callback)
        {
            Response.ContentType 
= "application/json"; Request.Cookies.TryGetValue("uid", out string str); var query = Newtonsoft.Json.JsonConvert.SerializeObject(new { code = str }); Response.Headers.Add("Set-Cookie", $"uid={str}; SameSite=None; Secure=True;Path=/"); return
callback + "(" + query + ")"; }