PHP の CORS の問題: プリフライト要求からの応答が渡されない。許可されたソース
P粉564192131
P粉564192131 2023-10-21 09:35:29
0
2
706

つまり、CORS に関する投稿がたくさんあることはわかっており、それらを追加しているところですが、役立つ回答が見つかりません。そこで、PHP API に依存する Angular 4 アプリケーションを構築しています。 app.example.com のアプリと api.example.com の API を使用してドメインにスローすると、ローカルでは正常に動作します。ログインが原因でできません次のエラーが表示されます:

XMLHttpRequest は http://api.example.com/Account/Login を読み込むことができません。 アクセス制御チェックに失敗したプリフライト要求への応答: いいえ リクエストに「Access-Control-Allow-Origin」ヘッダーが存在する リソース。したがって、ソース「http://app.example.com」は許可されません アクセス。

私のphpコードは次のようになります:

リーリー

私の Angular の投稿は次のようになります:

リーリー

Postman 経由でリクエストを実行すると (これは CORS には影響しません)、次の結果が得られます:

リーリー

これが問題の核心であるかどうかをテストするために、起点を '*' に設定してみましたが、やはり同じように失敗しました。

#########編集###### 以下の情報を更新するだけです。ヘッダーの大文字と小文字を変更しても効果はありません。また、if ステートメントからコードを取り出しても効果はありません。

ライブアプリケーションにローカル API に移動するように指示して PHP をデバッグしましたが、PHP は期待どおりに動作しています。ヘッダーを設定し、それをすべての if ステートメントに挿入します。

ショット 2 の編集

本当に助けが必要なので、何かアイデアがある人がいたら、よろしくお願いします。

ショットの編集 3

すべてのヘッダー要素を php ではなく .htaccess に設定すると、パスできます。しかし、今私は上記のエラーに悩まされています。これは Postman を使用するときにいつも発生するエラーですが、今度は実際の Web サイトを使用するときに発生します。

{"error":"invalid_client","error_description":"ヘッダーまたは本文にクライアント資格情報が見つかりません"}

私の応答ヘッダーは次のようになります

リーリー それが機能したら、* から私のドメインのみに変更します。ただし、今は * のままにします。

私のヘッダーのリクエストどおり。

P粉564192131
P粉564192131

全員に返信(2)
P粉952365143

私の同様のケースでは、Angular フロントエンドと Php バックエンドが以下のコードに役立ちました。最初にヘッダーを送信します:

リーリー

その後はオプションのリクエストを無視できます:

リーリー

このアプローチは、Angular で埋め込みリクエスト メソッドの「post」および「delete」を処理するのに役立ちました。

いいねを押す +0
P粉860370921

さて、私も最近同様の問題を抱えていましたが、.htaccess を使わずにバックエンドのみですべて解決しました。

ブラウザがクロスサーバーリクエストを送信するとき、最初に OPTIONS リクエストを送信して、リクエストが有効であること、および「実際の」リクエストを送信できることを確認します。 「実際の」リクエストは、OPTIONS から正しく有効な応答を取得したときに送信されます。

バックエンドへの両方のリクエストについて、content-type、allow-origin、allow-headers などの正しいヘッダーが返されることを確認する必要があります...

バックエンドの OPTIONS リクエストで、アプリケーションがアプリケーションの完全なフローを続行するのではなく、ヘッダーを返し、応答を返すようにしてください。

「実際の」リクエストでは、正しいヘッダーと通常の応答本文を返す必要があります。

###例:### リーリー ### 覚えておくべきこと: ###

使用する場合: "Access-Control-Allow-Credentials" = true 「Access-Control-Allow-Origin」が「*」になっていないことを確認してください。正しいドメインに設定する必要があります。 (ここでたくさんの血が流されました:/)

  • 「Access-Control-Allow-Headers」で取得する許可ヘッダーを定義します。 定義しない場合、リクエストは失敗します

  • 「Authorization: Bearer」を使用する場合、「Access-Control-Allow-Headers」にも「Authorization」が含まれている必要があります。そうでない場合、リクエストは失敗します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート