资讯专栏INFORMATION COLUMN

记一次eggjs+axios传输multipart的纠错过程

CarterLi / 2020人阅读

摘要:总所周知,的策略让每次都要发送码验证,为了方便,我在的里作了前置拦截。结果不幸从此发生最开始没有看官方文档,以为应该加在里面,又没有考虑到要上传格式的文档,所以直接结果发送的是。这很正常,阅读源码知为时会自动添加的头。不加又以上传了。

总所周知,egg的csrf策略让post每次都要发送token码验证,为了方便,我在axios的interceptor里作了前置拦截。

结果不幸从此发生!
最开始没有看官方文档,以为csrf应该加在data里面,又没有考虑到要上传multipart/form格式的文档,所以直接 config.data = Assign({...data},{_csrf})
结果发送的type是application/type。这很正常,阅读源码知data为Obj时会自动添加application的头。

于是强行设置multipart/part的header,导致后端出现boundary not found
boundary作为请求的一部分,应由浏览器查看并正确设置,这点有后端经验的都很清楚,强行加boundary肯定没用。不加又以application上传了。

没办法,只有覆写transferRequest,然后更改config.data为config.data.append(_csrf,xxx),至此浏览器成功正确设置multipart头

PS:主动设置multipart头完全无效,axios源码里探测到multipart头就会删除它,网上不懂的人不要乱说行不行,中国论坛就是这种垃圾风气,没试过没看过就开始传播。。。。。。
PS2:没搞懂egg 安全策略默认禁止options请求,我怎么跨域呢????????????????????又回到上古世纪的jsonp或者只能proxy了???????

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109938.html

相关文章

  • 一次腾讯霸面---前端

    摘要:客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。地址必须和一个网络掩码对应使用缺一不可。网络掩码的主要作用是告诉计算机如何从地址中析取网络标识和主机标识。 霸面的是前端实习生岗位,当时听同学说前端缺人,还特意设了一个霸面区,就去溜了个弯儿,毕竟不试试,怎么知道自己有多菜呢o( ̄︶ ̄)o一面技术面,面试官关注的点一直在数据结构、算法、计...

    ralap 评论0 收藏0
  • 一次vue仿网易云音乐单页面应用

    摘要:说明一直想做一个基于的项目但是因为项目往往要涉及到后端的知识不会后端真的苦所以就没有一直真正的动手去做一个项目。直到发现上有网易云音乐的才开始动手去做。仅仅完成了首页登入,歌单,歌曲列表页。 说明 一直想做一个基于VUE的项目,但是因为项目往往要涉及到后端的知识(不会后端真的苦),所以就没有一直真正的动手去做一个项目。直到发现GitHub上有网易云音乐的api NeteaseCloud...

    hqman 评论0 收藏0
  • jwt前后端整合方案

    摘要:到这里,基于的前后端分离实现方案就搞定啦四关于的一些思考实际上,在使用的过程中有一个比较致命的缺点,就是一旦签发了,在到期之前就会始终有效,除非服务器部署额外的逻辑。结语以上是关于基于的前后端分离实现方案的总结和思考。 一、jwt是什么 JWT全称, JSON Web Token,是一个以JSON为基准的标准规范。 举例:服务器认证以后,生成一个 JSON 对象,发回给用户,就像下...

    nevermind 评论0 收藏0
  • Eggjs小试

    摘要:项目都很小,但为了进一步了解,特意选择了作为框架基础开发后端服务。能将请求限制在同源网站,即只有拥有专有令牌的网站发送请求才会正确响应。项目生产静默部署,启动使用,停止使用。不足工具函数的访问需要自己手动添加扩展另没有写测试,希望下次补上。 前言 这段时间,用Eggjs作为后端服务框架开发了几个项目。项目都很小,但为了进一步了解Eggjs,特意选择了Eggjs作为框架基础开发后端服务。...

    waltr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<