簡體   English   中英

快速啟用CORs標頭仍然會導致錯誤

[英]Express enabling CORs headers still cause errors

使用http://enable-cors.org/提供的代碼進行表達,我已經添加到我的index.js文件中

/*these first five line direct from http://enable-cors.org/.com*/
app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});




var PORT = 3333;
app.listen(PORT, function(){
  console.log('listening on port', PORT);
})

request({url: 'http://bl.ocks.org/mbostock/raw/4090846/us.json', json: true}, function(err, data){
  app.get('/us', function(req, res, next){
    console.log(req) //prints correctly
    res.json(data.body);
    });
});

localhost:3333 / us正確顯示json,但是從localhost:3000 (由browsersync服務的端口)發出請求失敗,並顯示以下錯誤:

d3.min.js:1XMLHttpRequest cannot load localhost:3333/us. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

這不再是在express上為本地主機啟用CORS的正確方法嗎? 我也嘗試過將app.use方法'*''/us'作為第一個參數,但是沒有運氣。

進行Ajax調用時,您需要一個包含協議的標准URL。 這不是合法的網址:

localhost:3333/us

您可以在瀏覽器中鍵入此內容,瀏覽器將自動向其中添加一個協議(瀏覽器會進行各種操作,以嘗試將您在URl欄中鍵入的內容轉換為合法的URL,但這種邏輯不會發生通過Javascript和Ajax發出的請求)。 而是將URL更改為:

http://localhost:3333/us

我建議僅npm安裝“ cors”作為依賴項。 完成后,只需在要允許CORS的所有路線之前使用app.use。

 // Dependancies var cors = require('cors'); // Init express app var app = express(); app.use(cors()); // Routes now allow cors app.get('/api/endpoint', controllers.endpoint); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM