CI CSRF 保護をオンにしており、http で正常に動作します。https をオンにすると (サイトのベース URL を https に変更し、すべてのトラフィックを http から https にリダイレクトすることによって)、次のように表示され始めます。
csrf token is missing on request
ログのエラー。Codeigniter は、次の 2 つのケースでこのエラーを報告します。
1) csrf トークンが POST 要求に含まれていない 2) csrf トークン Cookie が設定されていないか、有効期限が切れています。
カスタム ajax 関数にはデフォルトで csrf トークンが含まれているため、すべての投稿リクエスト (主に AJAX) には csrf トークンが含まれているため、#2 に違いないと考えています。さらに、セキュアな Cookie 設定と非セキュアな Cookie 設定の両方を選択して構成をいじりましたが、どちらの場合もこのエラーが発生しました。
私の推測では、csrf トークン Cookie が設定されていないか、暗号化されていません。私の主な問題は、自分のシステム (Ubuntu の Chrome) で再現できないことですが、本番環境にプッシュすると、ログがすぐに燃え上がるのを見ました。
私が間違っていること、またはこのような状況をデバッグする方法についてのアイデアはありますか? ありがとう!
セッションと Cookie の設定:
$config['sess_cookie_name'] = 'session';
$config['sess_expiration'] = 1209600;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['cookie_prefix'] = "my";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
$config['cookie_secure'] = myconfig('use_https'); //this is true when https
//is forced, false otherwise