有学有练才叫学习:学而不思则罔,思而不学则殆:学而不习,纸上谈兵,习而不进,画地为牢!

iframe cookie丢失(same-site属性导致站点无法传输cookies)解决方法

代码编程 炮渣日记 3周前 (11-22) 14次浏览 已收录 0个评论 扫描二维码
最近在用的一个项目,忽然出现iframe嵌套的第三方页面登录页面无法使用的情况,在js的日志中发现:

cookie associated with a cross-site resource at ***** was set without the `SameSite` attribute. It has been blocked, as Chrome now only delivers cookies with cross-site requests if they are set with `SameSite=None` and `Secure`.

后来通过搜索,发现了网上的几种解决方法,以下以php为例

PHP >= v7.3

setcookie($name, $value, [
    'expires' => time() + 86400,
    'path' => '/',
    'secure' => true,
    'samesite' => 'None',
]);

For PHP < v7.3

  1. 使用apache设置SameSite cookies(推荐)

在apache的配置文件httpd.conf中添加:

Header always edit Set-Cookie (.*) "$1; Secure; SameSite=None"

2.在Nginx的配置文件中添加:

location / {
    # your usual config ...
    # hack, set all cookies to secure, httponly and samesite (strict or lax)
    proxy_cookie_path / "/; secure; HttpOnly; SameSite=lax";
}

3.通过php的header方法添加:

header("Set-Cookie: key=value; path=/; domain=example.org; HttpOnly; SameSite=Lax");

4.通过php的setcookie方法:

setcookie('cookie-name', '1', 0, '/; samesite=strict');
喜欢 (0)
炮渣日记
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址