Yii2 错误请求 400 - 无法从另一个域上的 iframe 登录

Yii2 Bad Request 400 - Unable to login from iframe on another domain

我在 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

任何帮助将不胜感激

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

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

如果站点位于 domain1.com[=11= 中的 iframe 中,您将能够使用这两个域上的相同会话登录到 domain1.com 和 domain2.com ]

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

    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 from '/' to '/;SameSite=None'.
  2. PHP 7.3和YII 2.0.21自带SameSite with 3的解决方案 值 Lax、Strict 和 None。单击 here to know more