nodejs下ueditor文件上传时csurf与contentType冲突问题
来源:互联网 发布:linux find命令找文件 编辑:程序博客网 时间:2024/05/29 03:25
表单提交时 form submit 直接就可以提交了,但是了防止跨站攻击,都可以加入CSRF来防御。
node下的配置
var csrf = require('csurf');app.use(csrf());app.use(function(req, res, next){ let _csrf = req.csrfToken(); res.locals.csrf = _csrf; res.cookie('XSRF-TOKEN', _csrf); return next();});页面
<form id="localimage" action="/login" method="POST"> <input id="csrf" type="hidden" name="_csrf" value="<%= csrf %>"> <input id="test" name="test" class="test" type="text"></form>
这么写当然没问题,但是当上传文件就不行了。
需要设置表单的enctype属性, 默认enctype 是对所有字符进行编码了的,同时csrf值就不能放到input 进行提交,从csrf源码来看我们传输csrf值可以放在以下几个地方
<form id="localimage" action="/login?_csrf=<%= csrf %>" method="POST" enctype="multipart/form-data"> <input id="imguploadinput" name="upfile" class="imguploadinput" type="file" accept="image/jpeg,image/gif,image/png,image/bmp"></form>ajax异步提交,也是如此,但文件时也 new FormData 提交的,csrf 放在FormData 里也不行。最好的就是放在请求头里
xhr.setRequestHeader('csrf-token', _csrf);
在ueditor里就很容易做了,ueditor里 是有ajax 方法提交的,但是没有支持file的,使用ue的方法默认就对表单信息进行了编码
可以将此方法修改一下就行了
addEvent(imguploadinput, 'change', function() { // var localImage = document.getElementById('localimage'); // localImage.submit(); var ajax = UE.ajax; // 图片 var file = document.getElementById('imguploadinput').files[0]; var form = new FormData(); form.append('file', file); ajax.request('/ueditor/ue?action=uploadimage', { method: 'POST', timeout: 10000, async: true,data: form,_csrf: csrf.value, onsuccess: function ( xhr ) { console.log( xhr.responseText ); }, //请求失败或者超时后的回调。 onerror: function ( xhr ) { alert( 'Ajax请求失败' ); } }); });
ueditor 可以修改如下
成功提交后 返回如下
否则 没有设置header 时
如果设置了
xhr.setRequestHeader("Content-Type","multipart/form-data"); 也是不行的
写死后就出现找不到Boundary(用户分割不同的字段)的错误的错误
注意 使用jquery 的ajax 提交时 ,contentType 需要设置为false
contentType:false
有需要的交流的可以加个好友
0 0
- nodejs下ueditor文件上传时csurf与contentType冲突问题
- UEditor上传图片与spring mvc上传图片冲突问题。
- 解决ext与ueditor同时使用,引入js文件冲突问题
- Ueditor上传文件及显示问题
- 关于使用ueditor编辑器--ueditor文件夹与编辑器初始化页面不在同一目录下,上传图片显示问题
- Ajaxfileupload 上传文件后返回response的contentType错误问题
- ueditor 文件上传
- Ueditor上传文件配置
- ueditor上传文件到七牛云坑爹录
- ueditor上传文件
- ueditor文件上传研究
- ueditor上传文件
- Ueditor上传路径问题
- ueditor上传路径问题
- nodejs 入门关于文件上传的问题
- 关于nodejs接受多文件上传问题
- nodejs + multer 实现文件上传与下载
- 解决ueditor上传文件到tomcat虚拟路径等问题
- iOS 开发中制作静态库.a、资源库.bundle、.framework
- 按钮上文字动态显示
- java基础学习面向对象之匿名内部类 五-13
- 蓝桥杯 算法训练 6-2递归求二进制表示位数
- Java基础之JVM内容总结
- nodejs下ueditor文件上传时csurf与contentType冲突问题
- 如何对图片进行SEO优化?只需三步
- 0215
- Android基础知识总结(二)
- 31 Next Permutation
- 随机打乱数组(包括二维数组)的顺序-python实现
- 初入typescript的一些阶段性总结
- http的状态响应码
- 【C语言简单说】二:第一个C语言程序详解(1)