2

問題

サーバー サイド セッション (PSQL データベースに保存) を使用しようとしていますが、リクエスト間で保持されません。

説明

私はアプリケーションをローカルで実行しており、2 つの部分で構成されています。

  1. MY_IP:2501で実行されているバックエンド
  2. MY_IP:3000で実行されているフロントエンド

私の理解では、Flask はセッションを PSQL の「セッション」テーブルに保存し (サーバー側のセッションを保存しているため)、その特定の行の ID が応答ヘッダーの形式でクライアントに送信されます。クッキー"。

上記のすべてが機能していますが、React フロントエンド (またはブラウザー) がこのヘッダーを受信すると、セッション ID がフロントエンドに保存されず、フロントエンドが送信できないため、ヘッダーから Cookie が作成されません。関連付けられたセッション データをフェッチできず、毎回空のセッションになるバックエンドと同じです。

:(

これまでに試したもの..

  1. 応答を返す際にすべてのタイプのヘッダーを許可するようにしました。

     `response.headers.add('Access-Control-Allow-Headers', "Origin, X-Requested-With, Content-Type, Accept, x-auth")`
    
  2. バックエンドだけでなくフロントエンドからも withCredentials ヘッダー属性を許可するようにしました。

  3. 「SESSION_COOKIE_HTTPONLY」構成プロパティを使用して、セッションから HttpOnly パラメータを削除しました

  4. フロントエンドと同じ「SESSION_COOKIE_DOMAIN」の設定完了

ノート

  1. POSTMAN 経由で API を呼び出すと、Cookie が POSTMAN に保存されるため、セッションは持続します。

  2. chrome --disable-web-security でアプリケーションを実行すると、それも機能します。

4

1 に答える 1