React を使用して Go サーバーから Cookie データを取得できません
P粉360266095
P粉360266095 2024-04-06 13:09:26
0
1
498

React の後、私はバックエンドに取り組み始め、バックエンド サーバーに github OAUTH とセッションを追加してデータを保存しました。これらはすべてバックエンドで正常に動作し、セッションなどを介して他のハンドラーからデータにアクセスできます。しかし、React を使用してバックエンドからセッションを取得しようとすると、決して取得できません。

リーリー

いろいろ試しましたが、最初はゴリラとは別の scs というセッション ライブラリを使用しました。自分のライブラリかもしれないと思いましたが、そうではありませんでした。コードを変更するとさまざまなエラーが発生しますが、バックエンドは毎回正常に動作します。バックエンドからの API リクエストでは、空の文字列データ、ネットワーク エラー、ユーザーが見つからないなどのエラーが発生することがありますが、コードを反復するたびにバックエンドをチェックするたびに正常に動作します。これは取得リクエストです:

ああああ

P粉360266095
P粉360266095

全員に返信(1)
P粉237029457

IIUC では、Web ページが http://localhost:5173 からロードされ、http://127.0.0.1:3080/user に対して GET リクエストが行われます。したがって、これはクロスオリジンリクエストです。

デフォルトでは、ブラウザはクロスオリジン XMLHttpRequest または Fetch 呼び出しで資格情報 (CookieHTTP Authentication など) を送信しません。 XMLHttpRequest オブジェクトまたは Request コンストラクターを呼び出すときは、特定のフラグを設定する必要があります。

クロスドメイン URL に Cookie を送信するようにブラウザに指示するには、フェッチ呼び出しを次のように変更する必要があります:

リーリー

詳細については、認証情報を含むリクエストを参照してください。

バックエンド コードには CORS ヘッダーが正しく構成されているようです。そのため、上記の変更により機能するはずです。そうでない場合は、ブラウザの DevTools コンソールを確認してください。何が問題だったかを示すエラー/警告メッセージが含まれているはずです。


これは、問題のデバッグに役立つ最小限のデモです。

  1. サーバーを起動します:

    main.go を実行します

  2. ブラウザで

    http://127.0.0.1:3080/callback に移動して、Cookie を設定します。

    Set-Cookie: session=abc;Path=/;Expires=2023 年 4 月 18 日火曜日 18:34:49 GMT;最大有効期限 =86372;HTTP のみ;SameSite=Lax

  3. http://127.0.0.1:5173/ に移動してページを開きます。

  4. このページの

    Get ボタンをクリックします。セッション Cookie「abc」が DevTools コンソールに出力されるはずです。

コメント:

Cookie がドメイン

127.0.0.1 (ポートなし) に保存されていることに気づきました。したがって、http://127.0.0.1:5173/ ページも Cookie を読み取ることができます。 リーリー


シークレット ウィンドウでは、他のウィンドウの Cookie を参照できません。ブラウザをチェックして、Cookie が存在することを確認してください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート