这是我的节点快速代码,
(function () {
'use strict';
var fs = require('fs');
var cors = require('cors');
var bodyParser = require('body-parser');
var express = require('express'),
app = express(),
port = 8112;
app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.listen(port);
app.route('/abc')
.post(abc);
function abc(req,res){
console.dir(req.body);
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.sendStatus(200);
}
})();
但我得到的请求正文为
{}
但在 Chrome 的网络选项卡中我可以看到请求负载。
请注意 OPTIONS 在此 POST 调用之前被触发。
请求标头
POST /abcHTTP/1.1 主机:localhost:8112 连接:
keep-alive 内容长度:11 Pragma:无缓存 缓存控制:无缓存
起源:http://本地主机:4200用户代理:Mozilla/5.0 (Windows NT
10.0; Win64; x64) AppleWebKit/537.36(KHTML,如 Gecko) Chrome/66.0.3359.181 Safari/537.36
x-api-key:CExkxDlFC35ckfCGX6m61x76GxIYH2h2Iv8bX874
内容类型:文本/纯文本;字符集=UTF-8
接受:/推荐人:http://localhost:4200/仪表板接受编码:gzip、deflate、br
接受语言:en-US,en;q=0.9
请求有效负载
{“dd”:“dd”}
您需要发送:Content-Type: application/json
for bodyParser.json()
要工作,没有它,您的 JSON 负载将不会被解析,这就是为什么您会得到:{}
来自docs:
bodyParser 对象公开各种工厂来创建中间件。
所有中间件都将使用解析后的内容填充 req.body 属性
当 Content-Type 请求标头与类型选项匹配时,主体,或者
如果没有要解析的正文,则为空对象 ({}),Content-Type
不匹配,或者发生错误。
使用示例.fetch
:
fetch('http://localhost:4200/dashboard', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({dd: 'dd'})
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)