RFC 2388的服务器实现multipart POST与RFC 2047有冲突?

8
我正在尝试在HTTP服务器上实现RFC 2388以支持多部分POST。我特别关注content-disposition的"name"参数。
在RFC 2388的第3节中,它声明:
原本是非ASCII字符集的字段名称可以使用RFC 2047中描述的标准方法在"name"参数的值中进行编码。
我听说目前没有UA支持在表单控件名称中使用RFC2047。它们将只发送原始编码的文本。(例如,如果表单控件的名称是用UTF-8编写的日语,则会用UTF-8发送多部分POST请求中的日语文本)
然而,为了“忠实于”这个问题最终能够得到解决,我更喜欢坚持RFC。
然而,问题出在RFC 2047本身。根据第5(3)节,它指出:
1.编码单词不得出现在“addr-spec”的任何部分中。 2.编码单词不得出现在“引号括起来的字符串”中。 3.编码单词不得在接收头字段中使用。 4.不得在MIME内容类型或内容分发字段的参数中使用编码单词,也不得在任何结构化字段正文中使用,除非在“注释”或“短语”内部。
冲突出在第4点。由于“name”参数是“content-disposition”字段的一部分,我不知道规范要求我们实施什么。
无论在“现实”中发生了什么,我想问一下是否有人也认为这是一个冲突。
我还在问自己为什么RFC 2388仍然引用RFC 2047作为“name”参数的参考,但仅在几段之后就将RFC 2231作为“filename”参数的编码规范进行了引用。由于RFC 2047不能用于“参数值”,这就是RFC 2231被创建的原因。那么RFC 2388不应该也更新一下,以便“name”参数使用RFC 2231吗?
总之,为了履行RFC 2388的功能,我应该完全不必实现RFC 2047吗?关于“filename”参数,我是否也需要使用RFC 2231?有人知道RFC 2231目前是否被任何UA用于上传非ASCII文件名吗?
1个回答

2
我并不认为这是一种冲突。请注意RFC 2047描述了各种技术,以允许在RFC 822消息头的各个部分中编码非ASCII文本,这种方式不太可能混淆现有的消息处理软件。
RFC 2388并不试图导入RFC 2047的所有假设/上下文,仅使用编码方法。因为这里编码的“部分”实际上是顶级“multipart/form-data”部分的子级,所以我认为尝试将RFC 2047关于邮件消息头的规则应用到这些部分是没有意义的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接