CORS POST请求返回空体
问题描述:
由该问题“Make POST JSON Request From HTML Script To A Node.JS App In Another Domain”后期,我实现了一个CORS POST请求:CORS POST请求返回空体
var request = new XMLHttpRequest();
var params = "parameter=test";
request.open('POST', 'http://localhost:3009/param_upload', true);
request.onreadystatechange = function() {if (request.readyState==4) alert("It worked!");};
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send(params);
这是非常接近在互联网的例子。这是我的设置我的node.js服务器端:
app.use(cors());
var corsOptions = {
origin: '*',
credentials: true,
allowedHeaders: ['*'],
optionsSuccessStatus: 200
}
当然,我app.post功能有CORS(corsOptions)在其头部。但不知何故身体是空的。根据要求,我得到了一个非常长的答复,里面没有测试文字。我可能错过了一点,但环顾四周,并没有发现它。如果有人帮忙,我会很高兴。
答
我想你忘了使用BodyParser中间件。
https://github.com/expressjs/body-parser
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
有了这个中间件你身体的所有数据将在req.body。
例:
app.post('/test', function(req, res) {
// body data
console.log(req.body);
}
+0
我不能相信我忘了这个。非常感谢。我有其他请求的JSON一个,但忘了检查我是否需要一个用于urlencoded字符串。再次,非常感谢。 – coras09
查找控制台中的错误?对于'allowedHeaders'&'*'请参阅https://*.com/questions/13146892/cors-access-control-allow-headers-wildcard-being-ignored –
该函数成功返回。没有错误。我会检查allowedHeaders。 – coras09
“但不知何故,身体是空的”在节点JS端或发送的http请求本身是空的?为什么在使用cors中间件后创建corsOptions对象?你必须将这些选项提供给cors中间件函数才能生效:'''app.use(cors(corsOptions));''' – Gatsbill