我知道這感覺像是一個重複的問題,但我已嘗試所有可能的方式爲我的ajax請求工作,但它只是無法。這是ajax代碼。 ajax調用是從index.html中的js文件觸發的Cors not for XMLhttprequest node/express
self.getJSON =() => {
$.ajax({
type: 'POST',
url: 'https://iot-backend-metropolia.herokuapp.com/api/user' ,
contentType: 'application/json; charset=utf-8',
dataType: "json",
})
.done(function(result) {
console.log(result);
})
.fail(function(xhr, status, error) {
alert(error);
})
.always(function(data){
});
}
我試過2種方法。
1) npm install cors
app.use(cors())
2) // Add headers
app.use(function (req, res, next) {
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8888');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
這兩種方法都失敗了,我找遍了網上,但每個人的答案是一樣的,現在我就正在發生的事情與我的服務器混淆。
我會發布我的server.js文件,如果有人可以找出最新的錯誤會有很大的幫助。
const path = require('path');
const http = require('http');
const express = require('express');
const cors = require('cors');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
const publicPath = path.join(__dirname, '../public');
const port = process.env.PORT || 3000;
var app = express();
app.use(cors())
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(publicPath));
app.listen(port,() => {
console.log(`Server is up on ${port}`);
});
錯誤消息在下面提供。 XMLHttpRequest無法加載https://iot-backend-metropolia.herokuapp.com/api/user。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「訪問控制 - 允許來源」標頭。因此不允許訪問原產地'http://localhost:3000'。
是什麼devtools顯示的響應頭? –
@DanielT。 304未修改 –