【问题标题】:Why REQ.BODY is always empty?为什么 REQ.BODY 总是空的?
【发布时间】:2020-07-11 16:46:49
【问题描述】:

我知道有很多答案已经标记为有效的解决方案,但我无法让它在我的情况下工作,所以请不要将其标记为已回答,这是我的场景:

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

【问题讨论】:

  • Access-Control-Allow-Origin 是一个 response 标头,客户端无法添加(如果客户端可以添加,则毫无意义)。您需要在服务器上配置 CORS
  • @jonrsharpe 谢谢你的回答..你能提供一个示例代码吗?
  • 大多数其他标记为有效解决方案的答案都是这么说的......

标签: node.js ajax api express


【解决方案1】:

您需要根据您的请求添加和配置 CORS

步骤:

1.安装cors npm包

npm install cors

2.Node服务器端片段

 var express = require('express')
 var cors = require('cors')
 var app = express()
 app.use(cors())
 //app.use(...) lines;

// app.post(..) lines;

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2017-06-11
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 2020-07-20
    相关资源
    最近更新 更多