总结
go对HTTP请求中的form-data类型body会解析到结构体的两个字段中,前一个是用于处理文本的map,后一个是用于处理文件流的地址map。
旧版本中对于content-type为text/plain等文本格式或不设置content-type的字段解析到文本map,将content-type:image/png等文件格式的解析到地址map中1.10.3版本中将有填content-type(现在暂时只验证过text/plain)的字段解析到地址map中,没填content-type解析到文本map中,这样的话对于请求过来的符合标准协议的text/plain字段我就无法在文本map中找到,从而导致一堆的不可访问。
故事背景
在提供一个POST请求接口给一个其他部门的同事之后,该同事使用自己的编写的程序进行提交时发现返回有问题,我打log发现他提交的数据被go解析到了文件map中,于是在大神的帮助下进行抓包研究发现该同事提交的data中的值含有postman中没有提交的content-type:text/plain,遂查了一下标准协议,发现该提交是没有问题的。
百思不得其解。
问题如下:

定位过程
- 使用fiddler模拟请求,在服务器使用tcpdump抓包发现是一样的


但依然出现此问题
