2

我在 domain1.com 上使用 iframe 而 yii2 网络应用程序在 domain2.com

我已经在 domain1.com 的 iframe 的 src 中传递了 domain.com url,并在 yii2 Access-Control-Allow-Origin: * 中使用它来启用 cors

我可以在 domain2.com 上登录,但如果我尝试通过 domain1.com 上的 iframe 登录,它会抛出错误的请求 400 错误

任何帮助将非常感激

4

2 回答 2

1

这是我的问题的答案,我解决了问题

  • 将 PHP 版本更改为 >7.3
  • 进入基本应用程序的 config/web.php 或 config/main.php
  • 添加:'httpOnly' => true, 'secure' => true, 'samesite' => 'None' 在请求块的 _csrf 参数和用户块中的 _identity cookie

如果站点位于 domain1.com 的 iframe 中,则使用此功能,您将能够在两个域上使用相同的会话登录 domain1.com 和 domain2.com

于 2020-03-16T21:39:41.890 回答
0

对于 PHP 版本 < 7.3,更新 main.php 配置文件并将变量路径中的 sameSite 的值设置为 None 为
- cookie

    identityCookie' => [
           'name' => 'your_cookie_name',
           'httpOnly' => true
           'path' => '/;SameSite=None',
           'secure' => true
       ]
    
- session-cookie  

    'cookieParams' => [
      'lifetime' => time()*60,
      'httpOnly' => true,
      'secure'=>true,
      'path' => '/;SameSite=None'
    ]
    

笔记:

  1. 您可能需要编辑文件:yii\web\Cookie,将 $path 的值从 '/' 更新为 '/;SameSite=None'。
  2. PHP 7.3 和 YII 2.0.21 带有 SameSite 的解决方案,具有 3 个值 Lax、Strict 和 None。点击这里了解更多
于 2020-07-31T15:05:09.480 回答