禁止(CSRF 令牌丢失或不正确。):
Forbidden (CSRF token missing or incorrect.):
我正在拨打 ajax 电话,如下所示:
var data_dict = {'user':{{ user.id }}, 'bookId':that.id, 'csrfmiddlewaretoken': '{{ csrf_token }}'};
$.ajax({
type: 'POST',
url:"/issuebook",
data:data_dict,
processData: false,
contentType: false,
success:function(response)
{
}
});
urls.py 是:
urlpatterns = [
url(r'^$',views.checkLogin,name='checklogin'),
url(r'^mylibrary/(?P<pk>\d+)/(?P<user_name>[\w\-]+)$',login_required(views.MyLibrary.as_view()),name='mylibrary'),
url(r'^centrallibrary/(?P<pk>\d+)/(?P<user_name>[\w\-]+)$',login_required(views.CentralLibrary.as_view()),name='centrallibrary'),
url(r'^issuebook$',login_required(views.IssueBookView.as_view()),name='issuebook'),
]
我在 ajax 调用时遇到 "Forbidden (CSRF token missing or incorrect.): /issuebook" 错误。
ajax 调用中的 csrf 令牌呈现为:
var data_dict = {'user':{{ user.id }}, 'bookId':that.id, 'csrfmiddlewaretoken':'fSSdu8dJ4FO6FvDz8eU5ISzOewRYyGbC'};
$.ajax({
type: 'POST',
url:"/issuebook",
data:data_dict,
contentType: false,
success:function(response)
{
}
});
此错误是由 ajax 函数中的 processData
和 contentType
选项引起的。删除这两个选项将解决问题。
解释:
参数必须作为使用 Content-Type application/x-www-form-urlencoded
的 urlencoded 发送到 Django。然而,如果您设置 processData: false
它不会对 POST 参数进行编码并且 contentType: false
将发送 ajax POST 请求作为 text/plain
.
我正在拨打 ajax 电话,如下所示:
var data_dict = {'user':{{ user.id }}, 'bookId':that.id, 'csrfmiddlewaretoken': '{{ csrf_token }}'};
$.ajax({
type: 'POST',
url:"/issuebook",
data:data_dict,
processData: false,
contentType: false,
success:function(response)
{
}
});
urls.py 是:
urlpatterns = [
url(r'^$',views.checkLogin,name='checklogin'),
url(r'^mylibrary/(?P<pk>\d+)/(?P<user_name>[\w\-]+)$',login_required(views.MyLibrary.as_view()),name='mylibrary'),
url(r'^centrallibrary/(?P<pk>\d+)/(?P<user_name>[\w\-]+)$',login_required(views.CentralLibrary.as_view()),name='centrallibrary'),
url(r'^issuebook$',login_required(views.IssueBookView.as_view()),name='issuebook'),
]
我在 ajax 调用时遇到 "Forbidden (CSRF token missing or incorrect.): /issuebook" 错误。
ajax 调用中的 csrf 令牌呈现为:
var data_dict = {'user':{{ user.id }}, 'bookId':that.id, 'csrfmiddlewaretoken':'fSSdu8dJ4FO6FvDz8eU5ISzOewRYyGbC'};
$.ajax({
type: 'POST',
url:"/issuebook",
data:data_dict,
contentType: false,
success:function(response)
{
}
});
此错误是由 ajax 函数中的 processData
和 contentType
选项引起的。删除这两个选项将解决问题。
解释:
参数必须作为使用 Content-Type application/x-www-form-urlencoded
的 urlencoded 发送到 Django。然而,如果您设置 processData: false
它不会对 POST 参数进行编码并且 contentType: false
将发送 ajax POST 请求作为 text/plain
.