reqable / reqable-app

Reqable issue track repo
https://reqable.com
3.4k stars 119 forks source link

[bug] 上传文件自动将中文文件名进行了URL编码 #1043

Open SugarFatFree opened 6 hours ago

SugarFatFree commented 6 hours ago

API调试功能,将请求体的“数据类型”改成“multipart”后,并将参数栏的“更多操作”选择“文件”,之后参数名为“file”,参数值选择一个中文文件,“发送”请求,后端接收到的文件名将会是一个URL编码后的文件名,如果我使用其他工具则不存在此现象,请不要将中文文件名自动进行URL编码,这样会阻碍我的功能测试。

MegatronKing commented 5 hours ago

HTTP RFC规范要求Header中必须是ASCII字符,其他的字符要用URI编码。其他工具则不存在此现象,应该是没有遵循RFC规范。

image

MegatronKing commented 5 hours ago

后端收到文件时,文件名建议先调用URI解码下。

SugarFatFree commented 5 hours ago

后端收到文件时,文件名建议先调用URI解码下。

这个“后端”并不一定可以由我进行控制,能否增加一个配置项进行控制是否进行URL编码呢?

SugarFatFree commented 5 hours ago

HTTP RFC规范要求Header中必须是ASCII字符,其他的字符要用URI编码。其他工具则不存在此现象,应该是没有遵循RFC规范。

image

这个规范是只针对header吧,上传文件的文件名并不是存在header中的啊,我记得是放在body里面的吧

MegatronKing commented 5 hours ago

这个规范是只针对header吧,上传文件的文件名并不是存在header中的啊,我记得是放在body里面的吧

文件名就在Content-Disposition里面,抓包看一下就知道了

SugarFatFree commented 5 hours ago

这个规范是只针对header吧,上传文件的文件名并不是存在header中的啊,我记得是放在body里面的吧

文件名就在Content-Disposition里面,抓包看一下就知道了

下载文件的文件名才在header里面吧,上传文件是在body里面的,这个是我抓到的request header: ··· POST /agent/proxyApi/flames-docqa/doc/semantic-doc/document/files/upload HTTP/1.1 Accept: application/json, text/plain, / Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6 Cache-Control: no-cache Connection: keep-alive Content-Length: 176596 Content-Type: multipart/form-data; boundary=----WebKitFormBoundarylvLZdyIcqo4mqNyD Host: 172.29.228.238:30880 Origin: http://172.29.228.238:30880 Pragma: no-cache Referer: http://172.29.228.238:30880/ User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0 X-Requested-With: XMLHttpRequest ···

SugarFatFree commented 5 hours ago

这个规范是只针对header吧,上传文件的文件名并不是存在header中的啊,我记得是放在body里面的吧

文件名就在Content-Disposition里面,抓包看一下就知道了

包括你截图规范的部分,GPT回复是“响应头”而不是“请求头”,现在出现的场景是上传文件而不是下载文件

MegatronKing commented 5 hours ago

额,抱歉,我忘了。multipart/form-dataContent-Disposition确实应该算是body部分。

MegatronKing commented 5 hours ago

下个版本修复