使用 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 请求的错误请求并做出反应