つまり、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 には影響しません)、次の結果が得られます:
リーリーこれが問題の核心であるかどうかをテストするために、起点を '*
' に設定してみましたが、やはり同じように失敗しました。
ライブアプリケーションにローカル API に移動するように指示して PHP をデバッグしましたが、PHP は期待どおりに動作しています。ヘッダーを設定し、それをすべての if ステートメントに挿入します。
ショット 2 の編集 本当に助けが必要なので、何かアイデアがある人がいたら、よろしくお願いします。ショットの編集 3
すべてのヘッダー要素を php ではなく .htaccess に設定すると、パスできます。しかし、今私は上記のエラーに悩まされています。これは Postman を使用するときにいつも発生するエラーですが、今度は実際の Web サイトを使用するときに発生します。{"error":"invalid_client","error_description":"ヘッダーまたは本文にクライアント資格情報が見つかりません"}
私の応答ヘッダーは次のようになります
リーリー
それが機能したら、* から私のドメインのみに変更します。ただし、今は * のままにします。
私のヘッダーのリクエストどおり。
P粉9523651432023-10-22 00:47:32
私の同様のケースでは、Angular フロントエンドと Php バックエンドが以下のコードに役立ちました。最初にヘッダーを送信します:
リーリーその後はオプションのリクエストを無視できます:
リーリーこのアプローチは、Angular で埋め込みリクエスト メソッドの「post」および「delete」を処理するのに役立ちました。
P粉8603709212023-10-22 00:29:25
さて、私も最近同様の問題を抱えていましたが、.htaccess を使わずにバックエンドのみですべて解決しました。
ブラウザがクロスサーバーリクエストを送信するとき、最初に OPTIONS リクエストを送信して、リクエストが有効であること、および「実際の」リクエストを送信できることを確認します。 「実際の」リクエストは、OPTIONS から正しく有効な応答を取得したときに送信されます。
バックエンドへの両方のリクエストについて、content-type、allow-origin、allow-headers などの正しいヘッダーが返されることを確認する必要があります...
バックエンドの OPTIONS リクエストで、アプリケーションがアプリケーションの完全なフローを続行するのではなく、ヘッダーを返し、応答を返すようにしてください。
「実際の」リクエストでは、正しいヘッダーと通常の応答本文を返す必要があります。
###例:### リーリー ### 覚えておくべきこと: ###
使用する場合: "Access-Control-Allow-Credentials" = true 「Access-Control-Allow-Origin」が「*」になっていないことを確認してください。正しいドメインに設定する必要があります。 (ここでたくさんの血が流されました:/)
「Access-Control-Allow-Headers」で取得する許可ヘッダーを定義します。 定義しない場合、リクエストは失敗します