content-length 引发的文章

150 阅读2分钟

背景

最近在做一个关于邮件模板的需求,需要不断的测试邮件模板样式的兼容性,但是遇到了一个特别诡异的问题,当用postman发送数据的时候,在content里边填写有的html文件,可以发送成功,有的文件就发送不了。 因为这个postman的配置是后端通过他那边发送给我,我直接import到postman的,然后后端那边一直说自己发送各种html都是好的,一直坚持两边的设置是一样的,所以自己就很奇怪,为什么会出现这种问题呢?

查找

1 查找html问题

既然不同的html发送,有的发送失败,有的发送成功,那是不是html里边有什么字符编码,还是其他问题导致的呢?

顺着这个思路,找到一个发送不成功的html文件,一点点的排查,到最后发现到了一部分发现到了一段代码的时候,就发送不成功了。

<td>时间到了开始看建档立卡视力是三六九等了可是</td>

然后把其中的汉字删除点就可以发送成功了,然后就怀疑是这些汉字的原因,可是把全部汉字删除,加上其他的英文字符,或者是其他标签,还是发送不成功,基本可以排除是汉字字符的问题了。

2 查找所谓的一样的环境,后端可以发送成功,但是我这边一直失败

仔细过去查看了后端的postman设置,发现两边的header是不一样的,然后当我把通过import引入进来的header去掉的时候,发现就可以发送成功了,基本可以断定是因为header的设置引起的。 可是是哪个属性引起的呢? 通过一番查找是设置的content-length过小导致的,这也很好的说明了为什么有的html文件,可以发送成功,有的却发送失败,也就是当发送的html文件超过设置的content-length的时候,就会发送失败。

content-type

后端返回的时候,表示返回的数据类型 前端发送的时候,表示发送的数据类型, 常用的content-type

  • 1 application/json
  • 2 application/x-www-form-urlencoded 默认的表单提交
  • 3 Content-Type: multipart/form-data; boundary=aBoundaryString 一般上传文件的时候,或者post发送数据的时候时候

Content-Length

表示发送body中字节的大小,和设置的content-type没有任何关系