ホームページ >バックエンド開発 >Golang >CORS ポリシー: プリフライト要求への応答がアクセス制御チェックに失敗しました: 'Access-Control-Allow-Origin' がありません

CORS ポリシー: プリフライト要求への応答がアクセス制御チェックに失敗しました: 'Access-Control-Allow-Origin' がありません

王林
王林転載
2024-02-06 11:00:08803ブラウズ

CORS 策略:对预检请求的响应未通过访问控制检查:无“Access-Control-Allow-Origin”

質問内容

バックエンドでは golang と gin-gonic/gin Web フレームワークを使用し、フロントエンドでは React axios を使用しています。 2 日間解決しようとしてきましたが、依然として以下の同じエラーが発生します:

リーリー

このエラーは、パッチ リクエストを送信しようとした場合にのみ発生します。そのため、そのリクエストにはプリフライト オプション リクエストが必要ですが、get と post はすべて期待どおりに機能し、プリフライト チェックは実行されません。

これは私のルーター構成のコードです:

リーリー

これはフロントエンドです:

リーリー

バックエンドが正しく設定されていると確信しており、必要なヘッダーがすべて返されるはずです。

たとえば、get リクエストの場合、応答ヘッダーは次のようになります:

リーリー

パッチ要求の試行に対しては応答がありませんが (当然のことですが)、プリフライト応答ヘッダーは次のとおりです:

リーリー

考えられる問題について何か提案はありますか?この二日経っても何も分かりません。よろしくお願いします!

タイトルも追加してみました:

リーリー

...もう一度 if ステートメントで:

リーリー

しかし、これはまったく役に立ちません。実際、この if ステートメントはプリフライトの実行時に実行されないため、サーバーがオプション要求を実行していることがコンソールからわかります。

リーリー ###編集:###

これはパッチリクエストを送信するcurlコマンドです(つまり、実際にはこれはプリフライトオプションリクエストです):

リーリー

このリクエストに対する応答:

cors policy: response to preflight request doesn't pass access control check: no 'access-control-allow-origin' header is present on the requested resource.

正解

非推奨のパッケージ
github.com/gin-gonic/contrib/cors

を使用していることがわかりました。代わりに github.com/gin-contrib/cors を使用する必要があります。 github.com/gin-contrib/cors を使用したデモ構成は次のとおりです: リーリー withcredentials

パラメータを使用したにもかかわらず、何らかの理由で、

patch リクエスト ヘッダーに「cookie」ヘッダーがありません。 リーリー ここで { withcredentials: true }

はデータとして扱われ、構成はありません。サーバーに送信するデータがない場合は、次のように記述する必要があります:

リーリー

以上がCORS ポリシー: プリフライト要求への応答がアクセス制御チェックに失敗しました: 'Access-Control-Allow-Origin' がありませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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