問題
サーバー サイド セッション (PSQL データベースに保存) を使用しようとしていますが、リクエスト間で保持されません。
説明
私はアプリケーションをローカルで実行しており、2 つの部分で構成されています。
- MY_IP:2501で実行されているバックエンド
- MY_IP:3000で実行されているフロントエンド
私の理解では、Flask はセッションを PSQL の「セッション」テーブルに保存し (サーバー側のセッションを保存しているため)、その特定の行の ID が応答ヘッダーの形式でクライアントに送信されます。クッキー"。
上記のすべてが機能していますが、React フロントエンド (またはブラウザー) がこのヘッダーを受信すると、セッション ID がフロントエンドに保存されず、フロントエンドが送信できないため、ヘッダーから Cookie が作成されません。関連付けられたセッション データをフェッチできず、毎回空のセッションになるバックエンドと同じです。
:(
これまでに試したもの..
応答を返す際にすべてのタイプのヘッダーを許可するようにしました。
`response.headers.add('Access-Control-Allow-Headers', "Origin, X-Requested-With, Content-Type, Accept, x-auth")`
バックエンドだけでなくフロントエンドからも withCredentials ヘッダー属性を許可するようにしました。
「SESSION_COOKIE_HTTPONLY」構成プロパティを使用して、セッションから HttpOnly パラメータを削除しました
フロントエンドと同じ「SESSION_COOKIE_DOMAIN」の設定完了
ノート
POSTMAN 経由で API を呼び出すと、Cookie が POSTMAN に保存されるため、セッションは持続します。
chrome --disable-web-security でアプリケーションを実行すると、それも機能します。