2017-04-07 2 views
2

クロムにCORS拡張を追加しました。 localhostからajaxと呼ばれると、私はXMLの形で応答を得ました。 CORS拡張機能を無効にすると、次のエラーが発生します。私はこのコミュニティで非常に多くの質問をしました。しかし私は私の問題を解決することができません。それは重複するかもしれませんが、私はこの質問に希望の助けを求めています。MeteorアプリケーションでAccess Control-Allow-Originエラーが発生していません

をXMLHttpRequestで読み込めません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。 Origin 'http://localhost:3000'はアクセスできません。応答は、HTTPステータスコード401 ...

を持っていたし、私のコードはAccess-Control-Allow-Originレスポンスヘッダを送信しません

HTTP.get('https://buzz.machaao.com/feed',{ 
    headers: { 
     "Access-Control-Allow-Origin" : "*" 
     } 
     }, (err, res) => { 
     if(err) { 
      console.log(err); 
     } 
     else { 
      console.log(res); 
     } 
    }); 

答えて

3

https://buzz.machaao.com/feedサイトですので、あなたは、プロキシinstead-を通して、あなたのリクエストを行う必要があり

var proxyUrl = 'https://cors-anywhere.herokuapp.com/', 
    targetUrl = 'http://catfacts-api.appspot.com/api/facts?number=99' 

HTTP.get(proxyUrl + targetUrl, 
    (err, res) => { 
    if(err) { 
     console.log(err); 
    } 
    else { 
     console.log(res); 
    } 
}); 

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORSは、ブラウザを使用すると、コードが再しない限り、Webアプリケーションで実行されるJavaScriptフロントエンドからの応答、クロスオリジンにアクセスできない理由を説明します。このようなスポンサーにはAccess-Control-Allow-Originレスポンスヘッダーが含まれます。

https://buzz.machaao.com/feedにはAccess-Control-Allow-Originレスポンスヘッダーがありません。したがって、フロントエンドコードがレスポンスのクロスオリジンにアクセスする方法はありません。

お使いのブラウザは応答をうまく取得でき、ブラウザのdevtoolsでも見ることができますが、Access-Control-Allow-Originレスポンスヘッダーがない限り、ブラウザはコードにコードを公開しません。だから代わりにそれを得るためにプロキシを使用する必要があります。

プロキシがそのサイトにリクエストを行い、応答を取得し、Access-Control-Allow-Originレスポンスヘッダーと必要な他のCORSヘッダーを追加してから、リクエストコードに戻します。 Access-Control-Allow-Originヘッダーが追加されたレスポンスがブラウザに表示されるので、ブラウザはフロントエンドコードが実際にレスポンスにアクセスできるようにします。

関連する問題