メイン ドメインからサブドメインへのアクセスに失敗しました: 'Access-Control-Allow-Origin' がありません
この問題は、Web アプリケーションがホストされている場合に発生しますサブドメイン上の がメイン ドメインの API サーバーにアクセスしようとしましたが、「要求されたリソースに 'Access-Control-Allow-Origin' ヘッダーが存在しません」エラーが発生しました。
CORS ポリシーの適用:
このメッセージは、API サーバーからの応答に、クロスオリジン リソース共有 (CORS) を有効にするために不可欠な「Access-Control-Allow-Origin」ヘッダーが欠落していることを示しています。 CORS は、Web アプリケーションが他のドメインに不正なリクエストを行うのを防ぐセキュリティ メカニズムです。
考えられる原因:
-
CORS 設定の構成が間違っている: 適切な「Access-Control-Allow-Origin」ヘッダーを応答に追加して、サブドメインからのクロスオリジン要求を許可するように API サーバーが正しく構成されていることを確認します。
-
リバース プロキシの問題: サブドメインと API サーバー間のリバース プロキシまたはロード バランサーが「Access-Control-Allow-Origin」ヘッダーをブロックしていないことを確認します。
トラブルシューティング:
-
プリフライト レスポンスの確認: Chrome DevTools またはcurl コマンドを使用して、プリフライト リクエストとレスポンスを調べます。プリフライト応答に必要な「Access-Control-Allow-Origin」ヘッダーが含まれていることを確認してください。
-
リクエストを API に直接送信する: プリフライト リクエストを API サーバーに直接送信してみて、他のコンポーネントからの干渉の可能性があります。
-
CORS 構成のテスト: オンライン CORS テスト ツールまたはブラウザ拡張機能を使用して、CORS 設定が正しく機能していることを確認します。
-
レスポンス ヘッダーの検査:curl などのツールを使用して API サーバーからのレスポンス ヘッダーを検査し、「Access-Control-Allow-Origin」ヘッダーが存在することを確認します。
-
AWS ロード バランサーを確認する設定: AWS の場合、ロード バランサーに関連付けられたターゲット グループが HTTPS 用に構成されているかどうかを確認します。これにより、CORS の問題が発生する可能性があります。
追加情報:
- [Gin を使用した Go での CORS の処理](https://www.digitalocean.com/community/tutorials/how-to-handle-cross-origin-resource-sharing-cors -in-go)
- [Gin-gonic で CORS を使用する](https://godoc.org/github.com/gin-gonic/gin#hdr-CORS)
- [テストCORS と cURL](https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request#Testing_CORS_with_cURL)
以上がメイン ドメインからサブドメイン API にアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。