node.js - 为什么 REQ.BODY 总是空的?
问题描述
我知道有很多答案已经标记为有效的解决方案,但我不能让它在我的情况下工作,所以请不要将它标记为已经回答,这是我的场景:
AJAX 客户端
var data ={};
data.test="ciaozio";
$.ajax({
url: 'http://localhost:5000/dir',
method: "POST",
contentType: "application/json",
data: JSON.stringify(data),
header: "Access-Control-Allow-Origin",
success: function(data){
console.log(data);
},
error: function(data) {
console.log("error");
}
});
NODEJS 服务器端
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var router = express.Router();
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
app.use(bodyParser.json()); // support json encoded bodies
app.use('/', router);
app.post('/dir', function (req, res) {
console.log(req.body);
res.end("Ok");
})
var server = app.listen(5000, function () {
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)
})
控制台输出
Example app listening at http://:::5000
{}
客户端控制台输出
Access to XMLHttpRequest at 'http://localhost:5000/dir' from origin 'null' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
index.js:29 error
jquery-3.4.1.min.js:2 POST http://localhost:5000/dir net::ERR_FAILED
解决方案
您需要根据请求添加和配置CORS。
脚步:
1.安装cors npm包
npm install cors
2.Node服务器端snippt
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
//app.use(...) lines;
// app.post(..) lines;
推荐阅读
- javascript - DateTimePicker 验证提交操作
- c# - 后面代码中的 ComboBox SelectedValuePath 问题
- git - GIT - 从上次拉取提交消息和差异
- python - PPTX 是否已更新为包含辅助轴?
- c# - Entity Framework 6 中一对多依赖的更新问题
- python - 如何在 JSON 文件中插入空间参考以在服务器上添加功能
- python - 如何在 QtPy 中设置日志记录级别(启用完整的调试信息)
- sharepoint-2013 - 托管元数据服务或连接当前不可用”
- isabelle - 在 Isabelle 证明中合并 2 个具有共同未知变量的子目标
- spring-boot - spring boot 安全数据库授权,无需密码编码