首页 > 解决方案 > 在 Django 中使用 Axios 和 CORS 获取 POST 请求的错误请求并做出反应

问题描述

我在 postman 上向这个 url http://localhost:8000/api/auth/users/ 发出了 post 请求。这是成功的。但是,在我的 react 前端尝试相同的操作会产生 400(错误请求错误)。它还说 Uncaught (in promise) Error: Request failed with status code 400

这是我的代码 AuthAPi.js:

import API from "./API"; 

const config = {
  headers :{
    "Content-Type": "application/json",
   }
}

const signIn = (email, password) => API.post("/auth/users/", {
  params : {
    email : email,
    password : password 
    
  },
},
  config
)
.Catch((error) => console.log( error.message ) );

export { signIn };

和 API.js

import axios from 'axios';

export default axios.create({
  baseURL: `http://127.0.0.1:8000/api`,
  headers: {
    "Content-type": "application/json"
  }
});

我尝试了几个没有解决方案的链接。我很乐意在这里得到帮助。

下面是控制台日志、网络日志和 Django 服务器日志的屏幕截图:

控制台日志

网络第 1 部分

网络第 2 部分

网络第 3 部分

django服务器日志

标签: javascriptreactjsaxiosdjango-cors-headers

解决方案


使用此代码:

API.post("/auth/users/", {
  params : {
    email : email,
    password : password 
  }
}

您正在将一个包含对象的对象作为发布数据传递给 axios。Axios 不介意,但你的服务器不喜欢。相反,请尝试:

API.post("/auth/users/", {
  email : email,
  password : password 
}, config)

这应该有效。如果要作为单个对象传入,则需要在 api 调用之外声明它:

let postData = {
  email: email,
  password: password
}
API.post("/auth/users/", postData, config)

推荐阅读