以下是我的nodejs代码
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.post('/', function(request, response) {
console.log(request.body);
console.log('post hit');
response.json({
message: 'Post Hit'
});
});
app.listen(process.env.PORT || 8000);
以下是我调用上述帖子结束点的javascript代码
$.ajax({
type: "POST",
crossDomain: "true",
url: "http://localhost:8000/",
data: {
"a": "b"
},
headers: {
"Content-Type": "application/json"
},
success: function(d) {
alert(d);
console.log(d);
},
error: function(e) {
console.log(e);
alert(e);
}
});
我总是得到我的request.body在节点js中为空。
有时候,其余的终点甚至都没有被击中。
我不知道这是如何运作的。
答案 0 :(得分:2)
在express.js中启用CORS
Map(f = function(x) data.frame(Location = x[1],
Event = x[2],
Probs = double(56),
Date = character(56),
DayWeek = integer(56), stringsAsFactors = FALSE),
x = data.frame(t(expand.grid(ListOfLocations, ListOfEvents))))
您还需要在ajax中的 json 中转换数据。
app.all('*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*')
res.header('Access-Control-Allow-Headers', 'X-Requested-With')
res.header('Access-Control-Allow-Headers', 'Content-Type')
next()
})
PS:使用POSTMAN测试时。它不发送预检请求。这就是它在POSTMAN中起作用的原因。
在此处详细了解预检:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests
答案 1 :(得分:2)
您还可以在chrome中添加“Allow-Control-Allow-Origin”扩展名,以使其在本地运行。 和
data: JSON.stringify({
"a": "b"
})
在客户端发送数据。
答案 2 :(得分:2)
您可以轻松启用具有this节点模块的角色!
const cors = require('cors');
const express = require('express');
const app = express();
app.use(cors());
/* other routes here */