[转载] editor.md编辑器在django中上传图片遇到的csrf问题

当Django开启CSRF验证后,需要在editor.md的图片上传请求中添加csrfmiddlewaretoken。通过在HTML头部添加meta标签,获取CSRFTOKEN,并在editor.md的image-dialog.js中插入隐藏的csrf字段,使图片上传时携带该token,从而避免403错误,实现正常上传。
摘要由CSDN通过智能技术生成

原文

请添加图片描述

问题描述

我们知道如果在django中开启了csrf验证中间件,那么前端post提交的数据必须带有csrfmiddlewaretoken,否则请求会被中间件拒绝,并抛出403错误。而editor.md上传图片时所提交的数据由它自己控制,我也未能在官网找到可以携带额外参数的方法,如果不做一些改动,图片上传会一直被django中间件拒绝,接下来是对编辑器代码的一点点修改

解决方案

1.在html页面中添加一条带有csrftoken的标签,等下会用到

<head>
...
<meta name="_token" content="{{ csrf_token }}">
...
</head>

2.找到editor.md中负责图片上传的js文件:editormd/plugins/image-dialog/image-dialog.js
3.找到var dialogContent所在的位置,并在前面定义一条含csrf_token的标签

var csrfToken = $('meta[name="_token"]').attr('content');
var csrfField = "<input type='hidden' name='csrfmiddlewaretoken' value='" + csrfToken + "' />"
var dialogContent = ...

4.在dialogContent中插入csrf标签,让它上传数据时携带token
请添加图片描述
5.大功告成,现在可以正常上传图片了
请添加图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值