質問: ブラウザ/ Postman/Node.js(http.getメソッド)からでもREST APIリクエストを作成できますが、Angularのリソースからはリクエストできません。ブラウザからREST APIリクエストを作成できますが、Angularのリソースからリクエストできないのはなぜですか?
エラーメッセージの抜粋です:
XMLHttpRequest cannot load http://example-of-external-api-site.com
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost' is therefore not allowed access.
これを尋ねる前に、私はCORSの定義を見てみてください。私が理解しているように、Angularのリソースから得たリクエストがなぜ別のドメインから来ているのかという理由から、なぜそれが許可されないのか理解できます。しかし、私のブラウザ/ Postman/Node.jsアプリも別のドメインのものではないのですか?
私はこれを答える助けてください、私は本当に
URLを直接アクセスする際に要求がブラウザから作られ
$ http.get()経由でuriにアクセスする場合、ブラウザのレンダリングされたコンテンツからXMLHttpRequestを利用したajax呼び出しを介してAngularJSコンテンツをホストするドメイン以外のドメインからリソースを要求しています。これを行うときは、ブラウザのセキュリティ制限に従って、サーバー上のホワイトリストに一致するCORsヘッダーを指定する必要があります。私は、$ http.getを実行すると、AngularJSコンテンツをホストしているドメインからリソースを要求していると仮定しています。 – kelvien
投稿したエラーメッセージに基づいて間違っています。 'XMLHttpRequest'を介して' http:// example-of-external-api-site.com'にリソースを要求しているので、CORが発行します。相対パスで常に要求していた場合、コンテンツをホストしているのと同じドメインからリソースを要求することだけが保証されます。 –
私はドメインからXMLHttpRequestを介して 'example-of-external-api-site.com'にリソースをリクエストすることで、CORSの問題がどのように存在するのか理解しています。私が明確にしたいのは、あなたのAngularJSコンテンツをホストしているドメイン以外のドメインからの言葉です。 – kelvien