发送 ajax 请求 django 时出现 400 错误
Posted
技术标签:
【中文标题】发送 ajax 请求 django 时出现 400 错误【英文标题】:I've got 400 error, when send ajax request django 【发布时间】:2016-01-06 09:12:44 【问题描述】:想做基于 ajax 的授权。 清单:
<script type="text/javascript">
$('#activeform').on('submit', function(event)
event.preventDefault();
var _self = $(this);
var token = $('input[name="csrfmiddlewaretoken"]').val();
$.ajax(
type: _self.attr('method'),
url: _self.attr('action'),
data: JSON.stringify(
"username": $('#id_username').val(),
"password1": $('#id_password1').val(),
"password2": $('#id_password2').val(),
"csrfmiddlewaretoken": token),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(json)
alert("Success"),
error: function( xhr, textStatus )
alert( [ xhr.status, textStatus ] ),
complete: function()
alert("Msg sended"),
crossDomain: false
);
); </script>
得到 403 错误和成功消息。如何解决这个问题?
【问题讨论】:
【参考方案1】:Django 的 csrf 保护要求 post 数据进行表单编码。您正在以 JSON 格式提交数据。
您可以通过更改 javascript 以提交表单编码数据来解决此问题。
如果您必须提交 JSON,那么您需要使用 csrf_exempt
装饰器来停用 Django 的 CSRF 检查。我不建议这样做,因为它会使您的视图容易受到 CSRF 攻击。
【讨论】:
以上是关于发送 ajax 请求 django 时出现 400 错误的主要内容,如果未能解决你的问题,请参考以下文章
解决YII提交POST表单出现400错误,以及ajax post请求时出现400问题
SharePoint REST API。在 SharePoint 列表上进行 AJAX 调用时出现 400 错误请求
尝试从 ajax(Wordpress 插件)将 FormData 中的 Blob 发布到 php 时出现 400(错误请求)