【问题标题】:dont get request body in node js rest web api不要在节点 js rest web api 中获取请求正文
【发布时间】:2017-01-21 09:19:05
【问题描述】:

以下是我的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 中为空。

有时,甚至没有命中其余端点。

我不知道这是怎么回事。

【问题讨论】:

标签: jquery ajax node.js express body-parser


【解决方案1】:

您可以使用this 节点模块轻松启用 cors!

const cors = require('cors');
const express = require('express');
const app = express();

app.use(cors());

/* other routes here */

【讨论】:

    【解决方案2】:

    您还可以在 chrome 中添加“Allow-Control-Allow-Origin”扩展以使其在本地运行。 和

    data: JSON.stringify({
        "a": "b"
    })
    

    在客户端发送数据。

    【讨论】:

      【解决方案3】:

      在 express.js 中启用 CORS

      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()
      })
      

      您还需要在 ajax 中转换 json 中的数据。

      data: JSON.stringify({
          "a": "b"
      })
      

      PS:当您使用 POSTMAN 进行测试时。它不发送预检请求。这就是为什么它可以在 POSTMAN 中工作。

      在此处阅读有关预检的更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

      【讨论】:

        猜你喜欢
        • 2021-03-07
        • 2016-01-30
        • 1970-01-01
        • 2015-09-15
        • 1970-01-01
        • 1970-01-01
        • 2021-03-24
        • 1970-01-01
        • 2021-01-27
        相关资源
        最近更新 更多