Yii2 Bad Request 400 - невозможно войти в систему из iframe в другом домене

Я использую iframe на domain1.com, а веб-приложение yii2 находится на domain2.com.

Я передал URL-адрес domain.com в src iframe на domain1.com и использую его в yii2 Access-Control-Allow-Origin: * для включения cors

Я могу войти на domain2.com, но он выдает ошибку 400 Bad Request, если я пытаюсь войти через iframe на domain1.com

Любая помощь могла бы быть полезна


person Hamza Awan    schedule 14.03.2020    source источник
comment
вам может потребоваться отключить enableCsrfProtection   -  person Muhammad Omer Aslam    schedule 15.03.2020
comment
ваш ответ здесь stackoverflow.com/questions/28526873/   -  person Mohsen    schedule 16.03.2020
comment
оба они не были решением   -  person Hamza Awan    schedule 17.03.2020


Ответы (2)


Вот ответ на мой вопрос, я решил проблему

  • Измените версию PHP на> 7.3
  • Перейдите в config/web.php для базового приложения или config/main.php
  • Добавьте это: 'httpOnly' => true, 'secure' => true, 'samesite' => 'None' в параметр _csrf для блока запроса и файл cookie _identity в пользовательском блоке.

Используя это, вы сможете войти в домены domain1.com и domain2.com, используя один и тот же сеанс на обоих доменах, если сайт находится в iframe в domain1.com.

person Hamza Awan    schedule 16.03.2020

Для версии PHP ‹ 7.3 обновите конфигурационный файл main.php и установите для параметра sameSite значение None в пути переменной as
- 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 с тремя значениями Lax, Strict и None. Нажмите здесь, чтобы узнать больше.
person Vishal Kumar    schedule 31.07.2020