xhr multipart boundary分隔符

首先是http请求常见的3种格式:

  • x-www-form-urlencoded
  • application/json
  • multipart/form-data

x-www-form-urlencoded

  最常见的格式。多用于get请求,数据按照键值对 key1=val1&key2=val2 的方式进行编码。

application/json 

  需要发送json数据时使用,原生xhr不能直接发送object对象,要用JSON.stringify(object)转义成真正的JSON。

multipart/form-data 

  使用此头部发送时浏览器不会对数据进行编码,当需要发送文件时必须使用此头部。

  正常的multipart请求chrome头部信息

  

  Content-Type里的boundary是分隔符,后台会根据分隔符去获取请求体里的数据

  分隔符开始

  键1:值1
  键2:值2

  分隔符结束  

  这样去获取数据,而boundary就是指定分隔符号的标志。如果没设置,后台会无法定位哪里开始读取数据。

  

 

  上面这图中,Content-Type未设置boundary

  后台报错:Error: bad content-type header, no multipart boundary 就是这个原因

  大部分封装好的xhr会自己加上boundary,或者不指定头部,也会自动加上。

  如果使用原生xhr,不设置指定头部也会默认加上。

xhr.setRequestHeader('Content-Type','multipart/form-data');

  但是如果设置了指定头部,xhr不会改动头部信息,就会造成以上错误

  只需要注释掉这段代码就好。

//xhr.setRequestHeader('Content-Type','multipart/form-data');

 

 

  工作中遇到的坑,记录一下

 

转载于:https://www.cnblogs.com/ksyy/p/11506361.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值