2017-10-09 114 views
0

上Express.js調用REST API,我收到以下錯誤,同時從角組件調用HTTP GET:錯誤從角2

「無法加載http://localhost:3005/json:沒有‘訪問控制允許來源’頭存在於請求的資源中,因此'http://localhost:3000'不允許訪問。「

+1

的可能的複製[否「訪問控制允許來源」角4應用程序(https://stackoverflow.com/questions/44448177/no-access-control-allow -origin-angular-4-app) – FussinHussin

+0

你需要設置你的頭文件,或者使用谷歌瀏覽器擴展 – FussinHussin

+1

可能的[如何允許CORS?]的重複(https://stackoverflow.com/questions/7067966/how-to -ALLOW-CORS) –

回答

0

您需要設置標題,允許(快遞)Node.js的的路由器從本地主機訪問。 下面的代碼,我使用*到節點服務器來訪問所有來源的請求。

router.use(function(req,res,next){ 
    res.header('Access-Control-Allow-Origin', req.get('Origin') || '*'); 
    res.header('Access-Control-Allow-Credentials', 'true'); 
    res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE'); 
    res.header('Access-Control-Expose-Headers', 'Content-Length'); 
    res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, X-Requested-With, Range'); 
    next(); 
}); 
0

更容易解決的方法是使用快遞中間件cors

這將爲您添加上述設置,以便您忘記這些設置。 您只能在開發模式下啓用這一點非常重要,因爲這可能會導致嚴重的安全問題。 考慮做類似:

const server = require('express')(); 
const cors = require('cors'); 
if (isDevelopmentMode) { 
    server.use(cors()); 
}