2017-06-14 4 views
1

私はデバッグするのに少し頭がおかしいというエラーがあります。 それは、HTTPから起こっている。このように見えることAngular2でGET:このようなエラーで失敗しこれはクロスドメインまたはクロスプロトコル要求ですか?

constructor(private http: Http) {} 

... 

this.http.get('someApi.abc.com/stuff?params`) 

のXMLHttpRequestがhttp://elsewhere.abc.com/ '「 に」http://someApi.abc.com/stuff?paramsをロードすることはできませんがブロックされていますCORSポリシーによる: 要求された リソースに 'Access-Control-Allow-Origin'ヘッダーが存在します。したがって、オリジン 'http://local.abc.com'は許可されません。

私には2つの問題があると思います。私は理解できません(おそらくsomeApiの所有者に連絡する必要があります)とCORSの問題です。 abc.com そして、プロトコルは次のとおりです:http だから関与なしCORSナンセンスがあってはならない

私の理解では、ドメインがあるということです。私は明らかに間違っているんだけど、:(

+0

r app backend – alehn96

答えて

1

同一生成元ポリシーが完全に一致する必要がドメインに基づいている理由を理解していません。local.abc.comが正確someApi.abc.comと一致していません。だから、http://local.abc.comhttp://someApi.abc.comは、2つの完全に異なる起源ですしたがって、フロントエンドのJavaScriptコードがhttp://local.abc.comで実行されていて、http://someApi.abc.comへのリクエストがある場合、これはクロスオリジンリクエストであり、CORSが関与します。つまり、ブラウザはフロントエンドのJavaScriptコードがレスポンスにアクセスすることを許可しませんhttp://someApi.abc.comサイトがレスポンスヘッダにAccess-Control-Allow-Originレスポンスヘッダを送信していない場合は、そのようなリクエストから返信してください。

+0

私は参照してください。私は 'someApi'も同様に一致する必要があることを認識していませんでした。それはクロスオリジンでなければなりません。そしてAPIの上に、応答の 'Access-Control-Allow-Origin'ヘッダーを返すようになっています。これが機能することを確認するために、私は最後に何かをする必要がありますか? – user2759883

+0

CORSプロトコルに関しては、フロントエンドコードからクライアント側のヘッダを使って何もする必要はありません。特別なCORSヘッダーがクライアント側から送信される唯一のケースは、Access-Control-Request-Headers&Access-Control-Request-Method要求ヘッダーですが、それらはブラウザによって自動的に送信され、CORSプリフライトOPTIONS要求ブラウザは単独で動作します。 OriginリクエストヘッダーはCORSプロトコルの一部でもあり、フロントエンドJSからのクロスオリジンリクエストに対しては常に送信されますが、再びリクエストヘッダーであり、ブラウザは自動的に独自に追加します – sideshowbarker

関連する問題