从项目本身的模板向我的 DRF API 发布数据时出现 CORS 错误
CORS error when posting data to my DRF API from a template within the project itself
我有一个 Django 项目,它有一个使用 DRF 创建的端点。我正在从项目本身(另一个渲染视图)中的模板向其发布数据。但是,我收到以下错误代码:
403 Unauthorized. CSRF token not provided.
这没有意义,因为端点和视图共享相同的原点。那么为什么我会收到此错误?我该如何解决这个问题?感谢您的帮助。
您只需按说明操作即可:提供 csrf 令牌。
使用此函数从 cookie 中获取它:
export function getCookie(name){
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
然后像这样修改您的 ajax 函数:
const csrf_token = this.getCookie('csrftoken')
const postData = async() => {
...
headers: {
'Content-Type': 'application/json',
'x-csrftoken': csrf_token
}
...
}
我有一个 Django 项目,它有一个使用 DRF 创建的端点。我正在从项目本身(另一个渲染视图)中的模板向其发布数据。但是,我收到以下错误代码:
403 Unauthorized. CSRF token not provided.
这没有意义,因为端点和视图共享相同的原点。那么为什么我会收到此错误?我该如何解决这个问题?感谢您的帮助。
您只需按说明操作即可:提供 csrf 令牌。 使用此函数从 cookie 中获取它:
export function getCookie(name){
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i].trim();
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
然后像这样修改您的 ajax 函数:
const csrf_token = this.getCookie('csrftoken')
const postData = async() => {
...
headers: {
'Content-Type': 'application/json',
'x-csrftoken': csrf_token
}
...
}