ホームページ >バックエンド開発 >PHPチュートリアル >AngularJS POST リクエストがプリフライト リクエストの 404 で失敗するのはなぜですか?

AngularJS POST リクエストがプリフライト リクエストの 404 で失敗するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 14:56:30307ブラウズ

Why Does My AngularJS POST Request Fail with a 404 for the Preflight Request?

AngularJS POST リクエストの失敗: プリフライト リクエストの HTTP 404

AngularJS では、POST リクエスト中に未解決の「XMLHttpRequest を読み込めません」エラーが発生する可能性があります。これは、実際の POST に先立つプリフライト リクエストの無効な HTTP ステータス コード (404) が原因で発生します。プリフライト要求は、要求された操作が許可されているかどうかを確認し、クロスオリジン リソース共有 (CORS) ポリシーへの準拠を確認することを目的としています。

根本原因: CORS ヘッダーが欠落しています

エラーの根本的な原因は、サーバーがプリフライト OPTIONS リクエストを適切に処理できないことにあります。クロスオリジンリクエストを有効にするには、サーバーは適切な CORS ヘッダーを設定する必要があります。

解決策: CORS ヘッダーをサーバー側で追加する

SlimPHP では、CORS ヘッダーを応答オブジェクト:

<code class="php">$app->response()->headers->set('Access-Control-Allow-Headers', 'Content-Type');
$app->response()->headers->set('Content-Type', 'application/json');
$app->response()->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
$app->response()->headers->set('Access-Control-Allow-Origin', '*');</code>

解決策: クライアント側でのプリフライト リクエストの無効化

または、AngularJS の共通ヘッダーをリセットすることで、クライアント側でプリフライト リクエストを無効にすることもできます。 :

<code class="js">app.config(function ($httpProvider) {
  $httpProvider.defaults.headers.common = {};
  $httpProvider.defaults.headers.post = {};
  $httpProvider.defaults.headers.put = {};
  $httpProvider.defaults.headers.patch = {};
});</code>

追加の考慮事項

機密データを含む POST リクエストの場合、JSON Web Token (JWT) などの認証および認可メカニズムの実装が必要になる場合があります。接続を確保します。セキュリティ違反を防ぐには、CORS を徹底的に理解し、OPTIONS リクエストを適切に処理することが重要です。

以上がAngularJS POST リクエストがプリフライト リクエストの 404 で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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