想要进行基于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错误,成功消息。如何解决这个问题?
答案 0 :(得分:0)
Django的csrf保护期望帖子数据采用表格编码。您将数据提交为JSON。
您可以通过更改javascript来提交表单编码数据来解决问题。
如果您必须提交JSON,那么您需要使用https://msdn.microsoft.com/en-us/library/xwewhkd1(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1装饰器来停用Django的CSRF检查。我不建议这样做,因为它会使您的观点容易受到CSRF攻击。