【问题标题】: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 的长度也有实际限制。

    【讨论】:

      【解决方案2】:

      否,但可以对非 URI 字符进行百分比转义。

      【讨论】:

        猜你喜欢
        • 2016-06-11
        • 2016-08-26
        • 2012-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多