看來,有沒有辦法不修改數據添加到CKEditor的上傳數據ckeditor源代碼。要修改的源代碼是ckeditor 3.6.2中第1440行的plugins/dialogui/plugin.js,其中ckeditor創建上傳iframe使用的表單。
// ADDED TO CKEDITOR CODE %<
var csrfitems = document.getElementsByName("csrfmiddlewaretoken")
var csrftoken = ""
if(csrfitems.length > 0)
csrftoken = csrfitems[0].value
// >% END OF ADDED CODE
if (elementDefinition.size)
size = elementDefinition.size - (CKEDITOR.env.ie ? 7 : 0); // "Browse" button is bigger in IE.
frameDocument.$.write([ '<html dir="' + langDir + '" lang="' + langCode + '"><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">',
'<form enctype="multipart/form-data" method="POST" dir="' + langDir + '" lang="' + langCode + '" action="',
CKEDITOR.tools.htmlEncode(elementDefinition.action),
'">',
// ADDED TO CKEDITOR CODE
'<input type="hidden" name="csrfmiddlewaretoken" value="',csrftoken,'"/>',
// >% END OF ADDED CODE
'<input type="file" name="',
CKEDITOR.tools.htmlEncode(elementDefinition.id || 'cke_upload'),
'" size="',
CKEDITOR.tools.htmlEncode(size > 0 ? size : ""),
'" />',
'</form>',
現在我們可以安全使用上傳CKEditor的使用Django
你使用[django-ckeditor](http://pypi.python.org/pypi/django-ckeditor)或其他小部件?如果你是自己寫的 - 這是正確的,你不能添加一些東西,因爲張貼的主體是文件本身。所以是的,你需要在url參數中提供令牌。 – ilvar
甚至Django的CKEditor的不使用文件上傳CSRF保護(這是壞恕我直言):@csrf_exempt高清上傳(請求): 「」」 上傳文件和URL發送回的CKEditor TODO: 驗證上傳 「」「 – jmbarbier