【问题标题】:May a URL contain arbitrary binary data in a GET-request?URL 可以在 GET 请求中包含任意二进制数据吗?
【发布时间】:2018-04-07 08:27:15
【问题描述】:
一个 URL 可以在 GET 请求中包含原始二进制数据吗?
是否可以创建一个 URL,www.example.com/**binary-data**,其中www.example.com/ 是普通的 ASCII 字符,**binary-data** 是任意原始字节值,例如,0x10。
我不会对二进制数据进行编码,而只是创建一个字符串,例如 C 语言中的char*,其中包含 ASCII 字符和二进制数据。
或者 POST-request 是将原始二进制数据作为正文的一部分发送的唯一方法?
【问题讨论】:
标签:
http
url
networking
web
【解决方案1】:
没有。在 HTTP GET 请求中传输的 URL 是百分比编码、UTF-8 编码的 Unicode 文本(生成“ASCII”字符串)。
同样,它是 Unicode 文本。
Unicode 编码不会产生任意二进制数据。一些任意二进制数据没有等效文本。
摆脱“原始”,服务器和请求当然可以同意使用诸如 Base64 之类的方案将任意二进制数据转换为 Unicode 文本。不过,到那时,您还不如使用带有正文的 HTTP 请求,尽管就 HTTP 而言,正文是原始二进制数据,但 HTTP 标头可以指示标准格式。此类请求包括 POST 和 PUT。
对 URL 的长度也有实际限制。