使用 axios 获取 400 错误错误请求

Posted

技术标签:

【中文标题】使用 axios 获取 400 错误错误请求【英文标题】:Getting 400 error Bad request using axios 【发布时间】:2017-11-27 14:50:42 【问题描述】:

我正在使用 axios 并收到 400 bad request 错误。我正在使用 react-redux 并尝试向 localhost:3000/posts 发送发布请求。这是我正在使用的代码。

import axios from 'axios';
import 
  GET_ALL_POSTS,
  GET_POST,
  CREATE_POST,
  DELETE_POST,
  UPDATE_POST
 from './types';

const ROOT_URL = 'http://localhost:3000';

export function createPost(content, title, cb) 
  return function(dispatch) 
    axios.post(`$ROOT_URL/posts`, content, title)
      .then((response) => 
        console.log(response);
        dispatch(
          type: CREATE_POST,
          payload: response
        );
      )
      .then(() => cb())
      .catch((error) => 
        console.log("Problem submitting New Post", error);
      );
  

【问题讨论】:

.catch() 中,记录到控制台的错误的全文是什么?你能从服务器获得任何信息吗?比如,如果你使用 Express,如果你在对 app.post('/posts', (req, res)) 的调用中使用 console.log(req),你会得到什么? 问题提交新帖子错误:在 XMLHttpRequest.handleLoad (bundle.js:28850) 的结算 (bundle.js:37974) 处的 createError (bundle.js:29014) 请求失败,状态代码为 400错误,如果我 console.log(req) 我什至没有达到这一点。好像什么都没有发送到服务器。 @skwidbreth 嗯——看来你不是第一个遇到这个问题的人。看到这篇文章 - github.com/mzabriskie/axios/issues/376 - 看起来底部可能有一个有用的答案。 @skwidbreth 他们似乎没有收到 400 错误,看起来他们正在尝试处理错误处理。由于某种原因,我的数据根本没有发布到服务器上。我认为更改错误的解释方式不会解决我的问题。 它在 wifi 上,一切运行良好。我的服务器说它在端口 3000 上运行,而我的客户端在 8080 上使用 webpack 运行。我可以向我的 localhost:3000/signin 发出发布请求,但是当涉及到 /posts 时,如果我控制台,它会给我一个错误的请求.log(error.response.data) 在 catch 【参考方案1】:

我也收到此错误,问题不在于服务器或 axios 或代理 url。 问题是我没有从我的反应应用程序发送正确的数据。 例如 我应该发送: email: 'ib2@gmail.com', password: 'asdf'

我发送的是: name: 'ib2@gmail.com', password: 'asdf'

这导致 api 不理解名称字段,因为我在 api 中提供了电子邮件作为键。

因此,如果您仍然遇到问题,请尝试检查您发送的数据是否正确。

【讨论】:

【参考方案2】:

对于每个 post 请求,客户端首先发送一个 OPTIONS 请求来检查服务器是否准备好接受连接。您还应该允许服务器接受选项请求。如果您不允许在节点服务器的情况下使用以下行

app.use(function(req, res, next) 
   res.header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');
      next();
);

【讨论】:

以上是关于使用 axios 获取 400 错误错误请求的主要内容,如果未能解决你的问题,请参考以下文章

发生错误 400(错误请求)时,使用 Axios 从 POST 捕获返回 json

axios.post 返回 400 React Native 的错误请求

在 Django 中使用 Axios 和 CORS 获取 POST 请求的错误请求并做出反应

在 Express.js 上使用 Axios 向 Spotify API 发出 POST 请求时出现错误 400

Axios POST状态400错误请求[重复]

Gitlab使用Axios或Curl请求发布/放入节点 - 无法写入资源 - 400错误