gpt4 book ai didi

unicode - 解析 HTTP header 值 : Quoting, RFC 5987、MIME 等

转载 作者:行者123 更新时间:2023-12-04 14:33:15 25 4
gpt4 key购买 nike

令我困惑的是 HTTP header 值的解码。

示例标题:Some-Header: "quoted string?"; *utf-8'en'Weirdness
jar 头值(value)的被引用? "的编码怎么样?本身?是 '一个有效的引号字符?分号 ( ; ) 的意义是什么? HTTP header 的值解析器能否被视为 MIME 解析器?

我正在制作一个透明代理,它需要透明地处理和修改许多 in-the-wild header 字段。这就是为什么我需要关于格式的如此多的细节。

最佳答案

Can header values be quoted?



如果您的意思是 RFC 5987 parameter生产适用于标题值的主要部分,然后没有。
Some-Header: "foo"; bar*=utf-8'en'bof

这里头值的主要部分可能是 "foo"包括引号,但是...

What's the significance of a semi-colon (;)?



具体的处理是为每个命名的头单独定义的。所以分号对于 Content-Disposition 来说很重要,但不适用于 Content-Length .

显然,这不是一个非常令人满意的解决方案,但这就是我们所坚持的。

I am making a transparent proxy that needs to transparently handle and modify many in-the-wild header fields.



你不能以通用的方式处理这些,你必须知道每个可能的标题的形式。对于任何你不认识的东西,不要试图分解 header 值;实际上,目前很少有人支持 RFC 5987,您不太可能对它进行很多有用的处理。

今天的现状是, header 值中的非 ASCII 字符根本无法在跨浏览器中使用,无论是编码的还是原始的。

幸运的是,它们很少被需要。唯一真正常见的用例是 Content-Disposition 的非 ASCII 文件名但是通过将文件名放在尾随 URL 路径部分中更容易解决。

Could the value parser for a HTTP header be considered a MIME parser?



不可以。HTTP 大量借鉴了 MIME 和 RFC 822 系列标准,但它不是 822 系列的一部分。它有自己的低级头语法,看起来像 822,但不太兼容。不能在 HTTP 中使用任意 MIME 功能,必须有一个标准化机制将它们明确地拖入 HTTP——这就是 RFC 5987,对于(部分)RFC 2231。

(有关其他一些差异的讨论,请参阅 RFC 2616 的第 19.4 节。)

理论上, multipart表单提交是 822 系列的一部分,您应该能够在那里使用 RFC 2231 编码。但现实是浏览器也不支持。

关于unicode - 解析 HTTP header 值 : Quoting, RFC 5987、MIME 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8609389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com