400在呼叫中获取数据时请求错误

时间:2018-12-25 06:47:50

标签: node.js reactjs

我正在一个端口3000中运行我的React js Web应用程序。 对于节点服务器,我正在使用4000。

在调用获取方法时,它会返回“ 400错误请求”。 错误 POST http://localhost:4006/auth/admin 400(错误请求)

反应代码npm在3000端口启动

fetch('http://localhost:4000/auth/admin',
    { mode: 'no-cors',
      method: "POST",
      body: JSON.stringify({
        username:"admin",
        password:"1234"
      }),
      headers: {
        "Content-Type": "application/json",
        'Accept': 'application/json, text/plain, */*',
        credentials: "omit", //
        // "Content-Type": "application/x-www-form-urlencoded",
    },
    })
    .then((response) => console.log(response));


node code running in 4000 port
const passport = require("passport");
const route = require("../constants/routeStrings");
const keys = require("../config/keys");
const processStatus = require("../constants/processStatus");

const success = {
  status: processStatus.SUCCESS
};

const failute = {
  status: processStatus.FAILURE
};

module.exports = app => {
  app.post('/auth/admin', passport.authenticate("local"), (req, res) => {
    res.send(success);
  });

};

3 个答案:

答案 0 :(得分:0)

因为护照无法读取您的参数,所以护照会提出400条回复。您需要告诉“节点”应用在实际路由之前对其进行解析。

// Import body parser, you should read about this on their git to understand it fully
const parser = require('body-parser');
const urlencodedParser = parser.urlencoded({extended : false});

// before your routes
app.use(parser .json());
app.use(urlencodedParser) // This will parse your body and make it available for your routes to use

然后打其他电话。

此外,请确保您要发送用户名和密码密钥,否则请阅读有关如何将这些密钥名称更改为其他名称的文档

答案 1 :(得分:0)

请勿拉紧身体。从

更改

body: JSON.stringify({ username:"admin", password:"1234" }),

body: { username:"admin", password:"1234" },

答案 2 :(得分:0)

我忍受了很长时间,但我克服了它编写那些代码块的过程。我成功地将请求发送到服务器的控制器,希望是你的:尝试一下。

首先定义一个异步函数来发出POST请求:

async function _postData(url = '', data = {}) {
    const response = await fetch(url, {
        method: 'POST',
        mode: 'cors',
        cache: 'no-cache',
        credentials: 'same-origin',
        redirect: 'follow',
        referrerPolicy: 'no-referrer',
        headers: {
            "Content-type": "application/json; charset=UTF-8"
        },
        body: JSON.stringify(data)
    });
    
    return response.json();
}

现在创建请求 JSON 负载:

let requestPayload = {
            propertyName1: 'property value1',
            propertyName2: 'property value23',
            propertyName3: 'property value',
            So on
           }

注意:请求模型将是您想要的模型,即您实际发送的请求负载。

现在使用此负载(包括您的端点 URL)发出请求:

_postData('http://servername/example', requestPayload )
            .then(json => {
                console.log(json) // Handle success
            })
            .catch(err => {
                console.log(err) // Handle errors
            });

100% 在我的项目上工作。