2016-04-29 24 views
3

我正在使用Eve和AngularJS中的API開發應用程序。 爲了避免CORS問題,我做了一個簡單的NodeJS服務器來服務我的靜態文件。 然而,即使通過編寫'X_DOMAINS': '*'(我使用Curl測試過,它工作)來允許我的Python Eve API上的所有域名後,當我想用​​$http調用API時,我在瀏覽器中發現了問題。CORS使用Eve和AngularJS的問題

這是我在Chrome中出現錯誤:

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,一些瀏覽器會阻止它。

另一個選項是禁用瀏覽器的網絡安全性(儘管不是最好的辦法)。您可以閱讀here

也請通過帖子here,以便您可以對問題有更好的瞭解。

0

在以下命令中: res.header(「Access-Control-Allow-Headers」,「X-Requested-With,Content-Type」);

您設置了允許的標題,也許您發送了其他標題例如「授權」,在這種情況下,您必須將這些標頭包含在上述命令中

3

用JavaScript處理一些類似的問題。我可以在前夜進行一些調整,但最終還是不夠的。 BadRequest響應由容器引擎發送,而不是前夕,禁止任何javascript嘗試處理錯誤。它似乎有一個很好的燒瓶延伸CORS覆蓋得好:

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

這是所有我需要在最後。