ホームページ >バックエンド開発 >Golang >リダイレクト後の Golang と Gin での CORS エラー

リダイレクト後の Golang と Gin での CORS エラー

WBOY
WBOY転載
2024-02-09 20:21:33457ブラウズ

重定向后 Golang 与 Gin 中的 CORS 错误

php エディター Xiaoxin では、リダイレクト後の Golang と Gin の CORS エラーについて紹介します。 CORS (Cross-Origin Resource Sharing) は、異なるドメイン間で安全にデータを転送するためのメカニズムですが、Golang および Gin フレームワークを使用する場合、CORS エラーが発生するのが一般的な問題です。この記事では、開発者がこの問題をよりよく理解し、対処できるように、CORS エラーの原因と解決策について詳しく説明します。初心者でも経験豊富な開発者でも、この記事は役立つガイダンスと解決策を提供します。 Golang と Gin の CORS エラーを一緒に調べてみましょう。

質問内容

goとginで書かれたWebサーバーにgoogle oauth2を実装しようとしています。 /google/sign-in と /google/callback という名前の 2 つの新しいエンドポイントを追加しました。 1 つ目はリクエストを受信して​​ Google 認証 URL にリダイレクトし、2 つ目はユーザーが有効な Google アカウントを選択し、トークンを検証して内部認証用の JWT を作成した後に呼び出されます。

すべて問題ありませんが、最初の API ルートを呼び出すと cors エラーが発生するため、そうではありません:

リーリー

これは私の golang コードです:

リーリー

認証コントローラー

リーリー

googleauthconfig では、コールバック URL は http://localhost:3000/google/callback で、Google Cloud Oauth 認証情報に追加されます。

コールバック リクエストに access-control-allow-origin が欠落していることはわかっていますが、そのヘッダーを追加するにはどうすればよいですか?

解決策

質問の情報によると、http://localhost:4200ページにアクセスし、http:/へのリクエストをリクエストしています。 /localhost:3000 /google/sign-in AJAX リクエストを送信し、https://accounts.google.com/o/oauth2/auth にリダイレクトします。これではうまくいきません。ページを https://accounts.google.com/o/oauth2/auth にリダイレクトする必要があります。

この問題を解決するには 2 つのオプションがあります:

  • クライアント コードを変更して、AJAX リクエストをフォーム リクエストに置き換えます (<form action="http://localhost:3000/google/sign-in" method="POST"&gt を使用) ; ### 要素)。この場合、RedirectToGoogleAuthPagec.JSON を別のものに置き換える必要があります。

  • または、リダイレクト先のターゲット URL を含む JSON コンテンツで応答するように

    RedirectToGoogleAuthPage を変更し、ページをターゲット URL にリダイレクトするようにクライアント コードを変更します (window .location = を使用)ターゲットURL)。

2 番目のオプションでは、コードへの変更が少なくて済むようです。

以上がリダイレクト後の Golang と Gin での CORS エラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。