ホームページ >ウェブフロントエンド >jsチュートリアル >異なるドメインから XML ファイルにアクセスすると「No \'Access-Control-Allow-Origin\' ヘッダー」エラーが表示されるのはなぜですか?

異なるドメインから XML ファイルにアクセスすると「No \'Access-Control-Allow-Origin\' ヘッダー」エラーが表示されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 18:21:03837ブラウズ

Why Do I Get

jQuery XML エラー: 「要求されたリソースに 'Access-Control-Allow-Origin' ヘッダーが存在しません」

を試行したときjQuery を使用して別のドメインにある XML ファイルにアクセスすると、「要求されたリソースに 'Access-Control-Allow-Origin' ヘッダーが存在しません。」というエラー メッセージが表示される場合があります。このエラーは、クロスオリジン AJAX 呼び出しを制限する同一オリジン ポリシーが原因で発生します。

同一オリジン ポリシーについて

同一オリジン ポリシーは、次のことを強制します。 Web ブラウザでは、リクエストを行う HTML ページと同じドメインでホストされているサービスへの AJAX 呼び出しのみが許可されます。指定された例では、HTML ページは http://run.jsbin.com/ でホストされ、XML ファイルは http://www.ecb.europa.eu/ に配置され、その結果、次のようなクロスオリジン リクエストが発生します。はブラウザによってブロックされています。

クロスオリジン リクエスト (CORS) の有効化

クロスオリジン リクエストを許可するには、サーバーは応答に適切なヘッダーを含める必要があります。これらのヘッダーの 1 つは Access-Control-Allow-Origin ヘッダーで、リソースへのアクセスを許可するオリジンを指定します。

XML ファイルの場合、ECB のサーバーは必要な CORS を提供しません。ヘッダーがあるため、エラーメッセージが表示されます。これを解決するには、次のヘッダーを含めるようにサーバーを構成する必要があります:

Access-Control-Allow-Origin: http://run.jsbin.com
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type

プリフライト リクエストに関する注意

特定のケース (例:単純でないヘッダーを持つ POST リクエストの場合、ブラウザーは OPTIONS プリフライト リクエストを実行して、サーバーが特定のリクエストに対して CORS をサポートしているかどうかを判断することがあります。このプリフライト リクエストに対するサーバーの応答に適切な CORS ヘッダーが含まれていない場合、メイン リクエストは同じエラー メッセージで失敗します。したがって、プリフライト リクエストとメイン リクエストの両方に対する応答に必要なヘッダーを含めることが重要です。

以上が異なるドメインから XML ファイルにアクセスすると「No \'Access-Control-Allow-Origin\' ヘッダー」エラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。