2012-12-21 71 views
6

我已經安裝了jbimages到我從計算機獲得本地圖片Django項目的jQuery的TinyMCE的文件夾中。從<a href="http://justboil.me/" rel="nofollow noreferrer">http://justboil.me/</a>的Django與jQuery的TinyMCE的圖片上傳插件

當我上傳的圖像,它是作爲「這花費了比可能出現usual.An錯誤。」引發錯誤 它顯示腳本輸出錯誤爲「CSRF驗證失敗,請求中止。」 但我已經以dialog.htm的形式提供了{%csrf_token%}。

enter image description here

蔭獲得選擇圖像後錯誤,如下圖所示:

enter image description here

誰能幫我如何擺脫這個問題的?

+0

這是一個Ajax請求? – Ahsan

回答

0

如果您嘗試通過ajax請求上傳圖片,則必須查看CSRF validation in ajax

如果還是不行則THIS問題可以幫助你。

+0

Iam不直接使用django的意見,這個jbimages。 Iam使用tinymce編輯器html。 Iam使用「jbimages」插件,它將呈現插件的詳細信息。當時它正在顯示。除此之外,它是有效的。 – Raji

1

好像形式被使用ajax公佈。如果您使用ajax發佈表單,請確保在POST數據中包含csrf_token。在這種情況下你失蹤了。

或者添加下面的腳本到你的base.html,而且需要更新每一個Ajax請求csrf_token的照顧。

CSRF_AJAX_PATCH

$(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 + '=')) { 
        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 = '//' + 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 + '/') || 
      (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') || 
      // or any other URL that isn'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('csrftoken')); 
    } 
}); 
相關問題