CORSを相互に呼び出すアプリケーションがあります。 2020年4月のGoogleでは、SameSite Cookie = noneが必要になります。 https://www.chromestatus.com/feature/5633521622188032
chrome version 80+なので、chromeブラウザを使用するすべてのユーザーがこのcsrfエラーに影響を与えます。PHP 7.3
問題は解決しました
1.フレームワーク内のすべてのCookieについて、application/config/config.phpにこの構成を追加します
ini_set('session.cookie_samesite', 'None');
ini_set('session.cookie_secure', TRUE);
2. system/core/Security.php行でこの行を編集します〜273置換元
setcookie(
$this->_csrf_cookie_name,
$this->_csrf_hash,
$expire,
config_item('cookie_path'),
config_item('cookie_domain'),
$secure_cookie,
config_item('cookie_httponly')
);
に
setcookie($this->_csrf_cookie_name, $this->_csrf_hash, ['samesite' => 'None', 'secure' => true,'expires' => $expire, 'path' => config_item('cookie_path'), 'domain' => config_item('cookie_domain'), 'httponly' => config_item('cookie_httponly')]);
csrfサポートのSameSite属性。
これと同じ問題がありましたが、PHP 7.2および私のCI 3.Xです。この問題は、applications/config/config.phpファイルに次の変更を加えることで解決されました。
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/; SameSite=None';
$config['cookie_secure'] = TRUE;
$config['cookie_httponly'] = FALSE;