标题值可以引用吗?
如果你的意思是 RFC 5987parameter
生产适用于标头值的主要部分,则否。
Some-Header: "foo"; bar*=utf-8'en'bof
这里标头值的主要部分可能是"foo"
包括引号,但是...
分号(;)有什么意义?
具体处理是为每个命名标头单独定义的。所以分号很重要,比如说,Content-Disposition
,但不适合Content-Length
.
显然这不是一个非常令人满意的解决方案,但这就是我们所坚持的。
我正在制作一个透明代理,需要透明地处理和修改许多野外标头字段。
您无法以通用方式处理这些,您必须知道每个可能的标头的形式。对于您不认识的任何内容,不要尝试分解标头值;实际上,目前支持 RFC 5987 的东西很少,您不太可能对其进行很多有用的处理。
目前的现状是标头值中的非 ASCII 字符根本无法很好地跨浏览器使用,无论是编码的还是原始的。
幸运的是,很少需要它们。唯一真正常见的用例是非 ASCII 文件名Content-Disposition
但通过将文件名放在尾随 URL 路径部分来解决这个问题会更容易。
HTTP 标头的值解析器是否可以被视为 MIME 解析器?
不。HTTP 大量借鉴了 MIME 和 RFC 822 系列标准,但它不是 822 系列的一部分。它有自己的低级标头语法,看起来像 822,但不太兼容。任意 MIME 功能不能在 HTTP 中使用,必须有一个标准化机制将它们显式拖入 HTTP,这就是 RFC 5987,用于 RFC 2231(的一部分)。
(有关其他一些差异的讨论,请参阅 RFC 2616 第 19.4 节。)
理论上,一个multipart
表单提交is822 系列的一部分,您应该能够在那里使用 RFC 2231 编码。但现实是浏览器也不支持这一点。