在 Django 和 React 应用程序中使用 Axios 和 CORS 获取 POST 请求的错误请求
Getting Bad request for POST request using Axios and CORS in Django and react app
我在 postman 上向 url http://localhost:8000/api/auth/users/ 发出了 post 请求。它是成功的。但是,在我的反应前端尝试同样的事情会产生 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 服务器日志的屏幕截图如下:
使用此代码:
API.post("/auth/users/", {
params : {
email : email,
password : password
}
}
您正在将一个包含对象的对象作为 post 数据传递给 axios。 Axios 不介意,但你的服务器不喜欢。相反,尝试:
API.post("/auth/users/", {
email : email,
password : password
}, config)
这应该有效。如果要作为单个对象传入,则需要在 api 调用之外声明它:
let postData = {
email: email,
password: password
}
API.post("/auth/users/", postData, config)
params
是要随请求一起发送的 URL 参数
您使用的 post
实例方法的签名是 axios#post(url[, data[, config]])
,因此您应该这样提出请求
const signIn = (email, password) => API.post("/auth/users/", {
email : email,
password : password
},
config
)
我在 postman 上向 url http://localhost:8000/api/auth/users/ 发出了 post 请求。它是成功的。但是,在我的反应前端尝试同样的事情会产生 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 服务器日志的屏幕截图如下:
使用此代码:
API.post("/auth/users/", {
params : {
email : email,
password : password
}
}
您正在将一个包含对象的对象作为 post 数据传递给 axios。 Axios 不介意,但你的服务器不喜欢。相反,尝试:
API.post("/auth/users/", {
email : email,
password : password
}, config)
这应该有效。如果要作为单个对象传入,则需要在 api 调用之外声明它:
let postData = {
email: email,
password: password
}
API.post("/auth/users/", postData, config)
params
是要随请求一起发送的 URL 参数
您使用的 post
实例方法的签名是 axios#post(url[, data[, config]])
,因此您应该这样提出请求
const signIn = (email, password) => API.post("/auth/users/", {
email : email,
password : password
},
config
)