Django使用jQuery ajax post数据,出现403错误的解决方法

分类:前端技术    发布时间:2017-08-28 03:19:33

方法一:

 

如果用jQuery来处理ajax的话,Django直接送了一段解决问题的代码。把它放在一个独立的js文件中,在html页面中都引入即可。注意这个js文件必须在jquery的js文件引入之后,再引入即可

[javascript] view plain copy

1.  $(document).ajaxSend(function(event, xhr, settings) {  

2.      function getCookie(name) {  

3.          var cookieValue = null;  

4.          if (document.cookie && document.cookie != '') {  

5.              var cookies = document.cookie.split(';');  

6.              for (var i = 0; i < cookies.length; i++) {  

7.                  var cookie = jQuery.trim(cookies[i]);  

8.                  // Does this cookie string begin with the name we want?  

9.                  if (cookie.substring(0, name.length + 1) == (name + '=')) {  

10.                     cookieValue = decodeURIComponent(cookie.substring(name.length + 1));  

11.                     break;  

12.                 }  

13.             }  

14.         }  

15.         return cookieValue;  

16.     }  

17.     function sameOrigin(url) {  

18.         // url could be relative or scheme relative or absolute  

19.         var host = document.location.host; // host + port  

20.         var protocol = document.location.protocol;  

21.         var sr_origin = '//' + host;  

22.         var origin = protocol + sr_origin;  

23.         // Allow absolute or scheme relative URLs to same origin  

24.         return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||  

25.             (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||  

26.             // or any other URL that isn't scheme relative or absolute i.e relative.  

27.             !(/^(\/\/|http:|https:).*/.test(url));  

28.     }  

29.     function safeMethod(method) {  

30.         return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));  

31.     }  

32.   

33.     if (!safeMethod(settings.type) && sameOrigin(settings.url)) {  

34.         xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));  

35.     }  

36. });  


方法二:

在处理post数据的view前加@csrf_exempt装饰符

例如

[python] view plain copy

1.  @csrf_exempt  

2.  def profile_delte(request):  

3.      del_file=request.POST.get("delete_file",'')  

4.        


标签: Django jQuery ajax

阅读(39)┆ 评论(0) ┆ (0) ┆ 返回博客首页


发表我的评论

欢迎您: | 退出登录


文章评论