ホームページ  >  記事  >  ウェブフロントエンド  >  Djangoでjquery ajax postデータを使用する場合の403エラーの解決策

Djangoでjquery ajax postデータを使用する場合の403エラーの解決策

亚连
亚连オリジナル
2018-05-25 09:32:573659ブラウズ

django で jquery ajax post data を使用すると 403 エラーが発生します。解決方法を以下に 2 つ紹介しますので、必要な方は参考にしてください

Ajax 投稿データは 403 エラーを引き起こします

方法 1:

jQuery を使用して ajax を処理する場合、Django は問題を解決するコードを直接送信します。別のjsファイルに入れてhtmlページに導入します。この js ファイルは jquery js ファイルの導入後に導入する必要があることに注意してください

$(document).ajaxSend(function(event, xhr, settings) { 
  function getCookie(name) { 
    var cookieValue = null; 
    if (document.cookie && document.cookie != '') { 
      var cookies = document.cookie.split(';'); 
      for (var i = 0; i < cookies.length; i++) { 
        var cookie = jQuery.trim(cookies[i]); 
        // Does this cookie string begin with the name we want? 
        if (cookie.substring(0, name.length + 1) == (name + &#39;=&#39;)) { 
          cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); 
          break; 
        } 
      } 
    } 
    return cookieValue; 
  } 
  function sameOrigin(url) { 
    // url could be relative or scheme relative or absolute 
    var host = document.location.host; // host + port 
    var protocol = document.location.protocol; 
    var sr_origin = &#39;//&#39; + host; 
    var origin = protocol + sr_origin; 
    // Allow absolute or scheme relative URLs to same origin 
    return (url == origin || url.slice(0, origin.length + 1) == origin + &#39;/&#39;) || 
      (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + &#39;/&#39;) || 
      // or any other URL that isn&#39;t scheme relative or absolute i.e relative. 
      !(/^(\/\/|http:|https:).*/.test(url)); 
  } 
  function safeMethod(method) { 
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); 
  } 
  if (!safeMethod(settings.type) && sameOrigin(settings.url)) { 
    xhr.setRequestHeader("X-CSRFToken", getCookie(&#39;csrftoken&#39;)); 
  } 
});

方法 2:

投稿データを処理するビューの前に @csrf_exempt デコレータを追加します

例:

@csrf_exempt 
def profile_delte(request): 
  del_file=request.POST.get("delete_file",&#39;&#39;)

上記はまとめました 皆さん、今後も皆さんのお役に立てれば幸いです。

関連記事:

動的ページングを実装するajax + jtemplateの詳細説明

リクエスト処理中に進行状況を表示するAjaxの簡単な実装

JQuery Ajaxは動的にテーブルを生成します

以上がDjangoでjquery ajax postデータを使用する場合の403エラーの解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。