Django KindEditor解决上传图片时提示csrf问题
Django KindEditor解决上传图片时提示csrf问题 解决办法: ? ? 1.页面添加以下代码: <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}"/> ? ? 2.在KindEditor初始化添加以下参数: function initKindEditor() { ? ? ? ? ? ? var kind = KindEditor.create('#content',{ ? ? ? ? ? ? ? ? width: '100%',// 文本框宽度(可以百分比或像素) ? ? ? ? ? ? ? ? height: '300px', ? ? ? ? ? ? ? ? uploadJson: '/admin/product/upload_image.html', ? ? ? ? ? ? ? ? afterBlur: function () { ? ? ? ? ? ? ? ? ? ? this.sync(); ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? allowPreviewEmoticons: true, ? ? ? ? ? ? ? ? allowImageUpload: true, ? ? ? ? ? ? ? ? extraFileUploadParams: { ? ? ? ? ? ? ? ? ? ? 'csrfmiddlewaretoken': '{{ csrf_token }}' ? ? ? ? ? ? ? ? }, ? ? ? ? ? ? ? ? items: [ ? ? ? ? ? ? ? ? ? ? 'source','|','undo','redo','preview','template','code','cut','copy','paste', ? ? ? ? ? ? ? ? ? ? 'plainpaste','wordpaste','justifyleft','justifycenter','justifyright', ? ? ? ? ? ? ? ? ? ? 'justifyfull','insertorderedlist','insertunorderedlist','indent','outdent','subscript', ? ? ? ? ? ? ? ? ? ? 'superscript','clearhtml','quickformat','selectall','fullscreen','/', ? ? ? ? ? ? ? ? ? ? 'formatblock','fontname','fontsize','forecolor','hilitecolor','bold', ? ? ? ? ? ? ? ? ? ? 'italic','underline','strikethrough','lineheight','removeformat','image','multiimage', ? ? ? ? ? ? ? ? ? ? 'flash','media','insertfile','table','hr','emoticons','baidumap','pagebreak', ? ? ? ? ? ? ? ? ? ? 'anchor','link','unlink', ? ? ? ? ? ? ? ? ] ? ? ? ? ? ? }); ? ? ? ? } ? ? 3. 直接简单的方法 $.ajaxSetup({ ? ? data: {csrfmiddlewaretoken: '{{ csrf_token }}' }, }); ? ? 4.最笨的方法,添加以下js文件代码。 jQuery(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')); ? ? } }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |