大多数编程语言内置的 HTTP 请求函数都会自动 UNICODE 编码。该怎么办

2018-12-07 12:09:36 +08:00
 claysec

现在就遇到一个问题,get 请求的时候。函数会在内部自动 unicode 编码将危险字符串变成%20 等然后发出 HTTP 请求包。虽然是正常功能。但是我是因为这个编码导致问题存在。
eg:

http://127.0.0.1/*123*&.txt

会变成这样

http://127.0.0.1/%2a123%2a%26.txt

导致我无法正确接收请求与响应。目前测试了 python 的 requests 包和 C#的都会自动编码发出。 小弟在此问问各位大神有没有什么解决方法或者思路。先谢谢各位了。
PS:

接收方无法控制进行 UNICODED 的解码
3086 次点击
所在节点    程序员
25 条回复
claysec
2018-12-07 15:04:02 +08:00
@jifengg 的确啊。可是没有办法。只能我这边找办法。#18 的方法可以实现我的需求。
@binux 先谢谢#18
passerbytiny
2018-12-07 15:27:11 +08:00
@claysec #7 关于 URL 的部分,不管你是按地址访问还是 Ajax 请求,浏览器总是自动编码,正常的服务器总是自动解码。编程方式下的基于 HTTP 的请求,也必须遵循类似规则,发送方必须编码,接收方必须解码。除非你用的不是基于 HTTP 连接,否则必须遵循这样的规则。

通常在 URL 的参数部分中包含嵌套的 URL 地址时才会需要手动编解码,甚至需要使用字符替换,其他情况编解码都是自动的。你并没有详细说明你的需求,不知道你这个到底是什么问题。
no1xsyzy
2018-12-07 15:38:02 +08:00
@claysec #7 很奇怪,我用浏览器试了下也是 encoded ……感觉坑很大
解决了就好,其实我还找到了这个: https://stackoverflow.com/a/40655848/6202760
claysec
2018-12-07 16:06:11 +08:00
@no1xsyzy 是坑很大。反正解决了。也先谢谢你
ryd994
2018-12-08 10:22:58 +08:00
手写 socket 配合 httplib 处理不就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/515316

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX