ank*_*kit 7 django django-csrf
我正在进行下面的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)
{
}
});
Run Code Online (Sandbox Code Playgroud)
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'),
Run Code Online (Sandbox Code Playgroud)
]
我在ajax调用中收到"Forbidden(CSRF令牌丢失或不正确.):/ 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)
{
}
});
Run Code Online (Sandbox Code Playgroud)
此错误是由ajax函数processData和contentType选项引起的.删除这两个选项将解决此问题.
说明:
必须将参数作为urlencoded with Content-Type发送到Django application/x-www-form-urlencoded.然而,如果你设置processData: false它将不会编码POST parmaters contentType: false并将发送ajax POST请求as text/plain.
| 归档时间: |
|
| 查看次数: |
6183 次 |
| 最近记录: |