我最近在属性"Same Site"上阅读了"RFC 6265",我看了一些在2016年4月讨论过的文章,为Chrome 51和Opera 39实现了"同站点"属性...
我想知道当前的PHP是否支持使用此属性创建cookie?
参考:
据这里的文章https://php.watch/articles/PHP-Samesite-cookies和PHP documenation在https://www.php.net/manual/en/session.security.ini.php,只有2 PHP 7.3 中添加的此新功能的可能配置选项:
然而,根据 Chrome 控制台,这需要设置为“无”:
与 URL 上的跨站点资源关联的 cookie 设置为没有该
SameSite属性。它已被阻止,因为 Chrome 现在仅在设置了SameSite=None和 的情况下才提供具有跨站点请求的 cookieSecure。您可以在应用程序>存储>Cookies 下的开发人员工具中查看 cookie,并在 URL 和 URL 中查看更多详细信息。
因此,我无法再设置跨站点 cookie。解决方法是什么?
我有一个 React 应用程序调用 node.js/Express 中的 API。
前端部署在 Netlify (https),后端部署在 Heroku (https)。
我的问题:
说话很便宜,给我看代码....
应用程序.js
require('./configs/passport');
// ...
const app = express();
// trust proxy (https://stackoverflow.com/questions/64958647/express-not-sending-cross-domain-cookies)
app.set("trust proxy", 1);
app.use(
session({
secret: process.env.SESSION_SECRET,
cookie: {
sameSite: process.env.NODE_ENV === "production" ? 'none' : 'lax',
maxAge: 60000000,
secure: process.env.NODE_ENV === "production",
},
resave: true,
saveUninitialized: false,
ttl: 60 * 60 * 24 * 30 …Run Code Online (Sandbox Code Playgroud) 我已经从 api 设置了一个 cookie 并将其作为响应返回。但是最新版本的 chrome beta 不允许我存储 cookie。我还设置了 SameSite="None" 和 Secure 以考虑第三方 cookie。但这并没有被存储。