React の後、私はバックエンドに取り組み始め、バックエンド サーバーに github OAUTH とセッションを追加してデータを保存しました。これらはすべてバックエンドで正常に動作し、セッションなどを介して他のハンドラーからデータにアクセスできます。しかし、React を使用してバックエンドからセッションを取得しようとすると、決して取得できません。
リーリーいろいろ試しましたが、最初はゴリラとは別の scs というセッション ライブラリを使用しました。自分のライブラリかもしれないと思いましたが、そうではありませんでした。コードを変更するとさまざまなエラーが発生しますが、バックエンドは毎回正常に動作します。バックエンドからの API リクエストでは、空の文字列データ、ネットワーク エラー、ユーザーが見つからないなどのエラーが発生することがありますが、コードを反復するたびにバックエンドをチェックするたびに正常に動作します。これは取得リクエストです:
ああああ
IIUC では、Web ページが
http://localhost:5173
からロードされ、http://127.0.0.1:3080/user
に対して GET リクエストが行われます。したがって、これはクロスオリジンリクエストです。デフォルトでは、ブラウザはクロスオリジン XMLHttpRequest または Fetch 呼び出しで資格情報 (Cookie や HTTP Authentication など) を送信しません。 XMLHttpRequest オブジェクトまたは Request コンストラクターを呼び出すときは、特定のフラグを設定する必要があります。
クロスドメイン URL に Cookie を送信するようにブラウザに指示するには、フェッチ呼び出しを次のように変更する必要があります:
リーリー詳細については、認証情報を含むリクエストを参照してください。
バックエンド コードには CORS ヘッダーが正しく構成されているようです。そのため、上記の変更により機能するはずです。そうでない場合は、ブラウザの DevTools コンソールを確認してください。何が問題だったかを示すエラー/警告メッセージが含まれているはずです。これは、問題のデバッグに役立つ最小限のデモです。
main.go を実行します
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
。
http://127.0.0.1:5173/
に移動してページを開きます。
Get ボタンをクリックします。セッション Cookie「abc」が DevTools コンソールに出力されるはずです。
コメント:
Cookie がドメイン127.0.0.1
(ポートなし) に保存されていることに気づきました。したがって、
http://127.0.0.1:5173/ページも Cookie を読み取ることができます。
リーリーシークレット ウィンドウでは、他のウィンドウの Cookie を参照できません。ブラウザをチェックして、Cookie が存在することを確認してください。