簡體   English   中英

Facebook Instant Game JS Cookie Chrome 錯誤

[英]Facebook Instant Game JS Cookie Chrome Error

我們在 JavaScript 和 HTML 上制作了一款游戲。 在 Safari、Firefox 和移動應用程序上一切正常。 問題是在 Chrome 上,游戲頁面 Cookies 未設置。

我們通常這樣做:

function setCookie(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "") + expires + "; path=/";
}

function 在除 Chrome 之外的所有瀏覽器上都能正常工作。 我們甚至嘗試使用一個名為 js-cookie 的庫,但它根本不設置值。

我們錯過了什么嗎?

你怎么稱呼你的 function? 以下 function 可以在 Chrome 中安全地創建 cookie。

 const DAY_IN_MILLIS = 24 * 60 * 60 * 1000; const createCookie = (name, value = '', days = 0) => { const cookie = { [name]: value }; if (days) { const date = new Date(); date.setTime(date.getTime() + (days * DAY_IN_MILLIS)); cookie.expires = date.toUTCString(); } return Object.entries({...cookie, path: '/' }).map(pair => pair.join('=')).join('; '); }; const setCookie = (name, value, days) => { document.cookie = createCookie(name, value, days); }; console.log(createCookie('username', 'John Doe')); console.log(createCookie('username', 'John Doe', 1));

所以問題是域。 Facebook 用途:

.facebook.com

但是 Instant Games 上的應用程序有另一個域,例如:

apps-*.apps.fbsbx.com

未設置 cookie,因為:

https://blog.heroku.com/chrome-changes-samesite-cookie

我只是改變cookie添加:

{ sameSite: "None", secure: true, expires: 7 }

這很好用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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