2016-04-29 10 views
3

私はEveとAngularJSのAPIを使ってアプリケーションを開発しています。 CORSの問題を避けるために、静的ファイルを提供する単純なNodeJSサーバーを作成しました。 しかし、'X_DOMAINS': '*'(私はCurlでテストしてうまくいきました)を書いてPython Eve APIのすべてのドメインを許可した後でも、$httpを使用してAPIを呼び出すときにブラウザで問題が発生します。EveとAngularJSを使ったCORSのトラブル

これは私がクロームで取得エラーです:

XMLHttpRequest cannot load http://localhost:5000/regions. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. 

私も、私はそれが役に立たないだろう考え出していても、私のノードのアプリでこれを書いた:

app.all('/*', function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); 
    res.header("Access-Control-Allow-Methods", "GET, POST","PUT"); 
    next(); 
}); 

何もこれまで働いていませんあらかじめ助けてくれてありがとう!

答えて

0

あなたのレスポンスヘッダでこれを追加します。

res.header("Access-Control-Allow-Origin", "http://localhost:8080"); 

は、次の指定を削除します。

http://localhost:8080 

または何あなたが試すことができますが、要求元を取得し、レスポンスに追加することです。このようなもの:

var hostName = req.get('host'); 
res.header("Access-Control-Allow-Origin", hostName); 

場合によっては、GETコールの場合は動作することがあります。しかし、それがPOSTの場合、一部のブラウザはそれをブロックします。

もう1つの方法は、あなたのブラウザでWebセキュリティを無効にすることです(これは最善の方法ではありません)。hereを読むことができます。

また、投稿の内容がhereであるため、問題をよりよく理解することができます。

0

res.header( "Access-Control-Allow-Headers"、 "X-Requested-With、Content-Type");

許可されたヘッダーを設定しました。おそらく他のヘッダーを送信しました。この場合、上記のコマンドにこれらのヘッダーを含める必要があります。

3

JavaScriptと同様の問題があります。私はイブのいくつかの微調整でそれを稼働させることができましたが、結局それでは十分ではありませんでした。 BadRequestの応答は、eveではなくフラスコエンジンによって送信され、エラーを処理する際のjavascriptの試行を無効にします。

from flask.ext.cors import CORS 
.... 
CORS(app) 

私は最終的に必要なものをすべてだった:よくそれをカバーして素敵なフラスコ拡張CORSがあります表示されます。

関連する問題