最近碰到一個問題,開發一個專案,讓別人 iframe 嵌入我,但是因為我程式這邊不論是 Server 端或是 Client 端
我都有讀寫 cookie 但是發現被人嵌入後竟然失效了...
直接先說結論,我第一時間就是懷疑應該是 SameSite Cookie Policy 有關係,我查了一下,因為我原本的原始碼都是使用
Lax ,但是如果你遇到你開發的網頁,是需要被人家嵌入,就得設定成 None 但是看了一 下網路文獻,除了 設定為 None 之外還要把 Secure 打開
下面直接分享 Code
Javascript code
function setCookie(name, value,seconds) {
var expires = new Date();
expires.setTime(expires.getTime() + (seconds*1000));
document.cookie = name + "=" + escape(value) + ";expires=" + expires.toGMTString() + ";" +" SameSite=None;Secure"
}
.NET C# code
public static void SetCookie(this Microsoft.AspNetCore.Http.HttpContext httpContext, string name, string value, double expireSeconds)
{
httpContext.Response.Cookies.Append(
name, value,
new CookieOptions() { SameSite = SameSiteMode.None,Secure=true,
Expires = DateTimeOffset.Now.AddSeconds(expireSeconds) });
}
看一下 Browser 看一下 應用程式 =>找到該網域=> Cookie
