curl版本URL校验行为变更及兼容方案技术咨询
curl版本间URL空格处理差异及解决方案
1. 行为变更的具体版本
该URL格式校验的收紧变更始于curl 7.85.0。在这个版本中,curl默认启用了更严格的URL解析规则,拒绝包含未编码空格的URL(包括末尾空格),而旧版本会自动对这类空格进行处理或忽略。
2. 恢复旧行为的参数及替代工具
恢复旧行为的CLI参数
对于curl 7.88.1,可以使用--allow-space参数来允许URL中包含空格,从而恢复旧版本的处理行为。示例命令:
$ curl --allow-space 'http://localhost:9999/v2/entities?q=a==12; '
另外,也可以手动将空格编码为%20,curl会正常解析编码后的URL:
$ curl 'http://localhost:9999/v2/entities?q=a==12;%20%20%20%20'
替代工具
如果不想修改curl参数,可选用以下工具:
- wget:默认允许URL中的空格,直接执行类似命令即可:
$ wget 'http://localhost:9999/v2/entities?q=a==12; ' - Python requests脚本:通过代码构造请求,能灵活处理畸形URL:
import requests url = 'http://localhost:9999/v2/entities?q=a==12; ' response = requests.get(url) print(response.status_code) - httpie:同样支持包含空格的URL,命令格式简洁:
$ http GET 'http://localhost:9999/v2/entities?q=a==12; '
内容的提问来源于stack exchange,提问作者fgalan
相关产品推荐
相关产品推荐

