当前位置: 首页 > 知识库问答 >
问题:

RFC 2388多部分冲突后与RFC 2047的服务器实现?

邓鸿雪
2023-03-14

我试图在HTTP服务器上实现RFC2388以支持多部分POST。

我正在查看规范,特别是内容处理的“名称”参数。

RFC 2388第3节规定:

最初在非ASCII字符集中的字段名称可以使用RFC 2047中描述的标准方法在“名称”参数的值内编码。

我“听说”目前没有UA支持表单控件名称上的RFC2047。他们将只发送原始编码的文本。(即,如果表单控件的名称是使用UTF-8的日语,它将发送包含UTF-8日语文本的多部分POST请求)

然而,为了“忠实”,这一问题总有一天会得到解决。我宁愿坚持RFC。

但问题来自RFC 2047本身。第5(3)条规定:

  • “编码字”不得出现在“地址规范”的任何部分中

冲突发生在第四个要点上。假设“name”参数是“content disposition”字段的一部分。我发现自己对规范要求我们实现者做什么感到困惑。

不管什么在“现实”中起作用/不起作用。我想问是否有人认为这也是一场冲突。

我发现自己也在问为什么RFC 2388仍然引用RFC 2047作为“名称”参数,但是仅仅几段之后就引用RFC 2231作为“文件名”参数的编码规范。鉴于RFC 2047不能用于“参数值”,这就是RFC 2231显然被创建的原因。如果RFC 2388没有被更新,以便“名称”参数使用RFC 2231。

底线是,为了实现RFC2388的功能,我是否应该或者根本不应该费心实现RFC2047?我还应该为“filename”参数使用RFC2231吗?有人知道目前任何UAs是否使用RFC 2231上传非ascii文件名吗?

共有1个答案

太叔炎彬
2023-03-14

我真的不认为这是一场冲突。请注意RFC 2047

描写。。。允许以不可能混淆现有消息处理软件的方式在RFC 822消息头的不同部分中编码非ASCII文本的技术。

RFC 2388并不是试图导入RFC 2047的所有假设/上下文,只是编码方法。因为这里编码的“部分”实际上是顶层“多部分/表单数据”部分的子部分,所以我认为尝试将RFC 2047中关于邮件消息头的规则应用于这些部分是没有意义的。

 类似资料:
  • 我今天心情不好,想找出这个错误发生在我身上的原因。 当我运行它使服务器停止,当我尝试重新启动服务器时,它会输出一个错误。请记住,在端口上运行,在端口上运行。这是app没有试图以任何方式与MySQL对话或连接,因此它们不应该相互交互。 平台:数字海洋,操作系统:Ubuntu 16.04,节点版本:8.2.1,MySQL版本:5.7 --定义者:systemd--支持:input_userauth_r

  • 部署 PHP 应用程序到生产环境中有多种方式。 Platform as a Service (PaaS) PaaS 提供了运行 PHP 应用程序所必须的系统环境和网络架构。这就意味着只需做少量配置就可以运行 PHP 应用程序或者 PHP 框架。 现在,PaaS 已经成为一种部署、托管和扩展各种规模的 PHP 应用程序的流行方式。你可以在 资源部分 查看 PHP PaaS “Platform as

  • Postgres 10和11的插入说明: 关于冲突[冲突目标]冲突行动 我有一张桌子: 而我想做的 但是我得到一个错误: ON CONFLICT DO UPDATE需要推理规范或约束名称提示:例如,ON CONFLICT(column_name) 为什么我必须提供一个确定的目标?如何提供主键或其他列集?

  • 我的应用程序使用谷歌登录。我使用google控制台(不是从android studio/firebase/etc)手动生成。 目前,虽然我没有明确地使用任何firebase服务,但我在应用程序初始化期间看到了与firebase相关的消息。 我只想集成Firebase实时数据库,我想知道它是否会与我目前的基于谷歌登录的auth方案冲突。重构所有与auth相关的逻辑不是我们目前所能负担得起的,我记得g

  • 本文向大家介绍angularjs实现与服务器交互分享,包括了angularjs实现与服务器交互分享的使用技巧和注意事项,需要的朋友参考一下 真正的应用需要和真实的服务器进行交互,移动应用和新兴的Chrome桌面应用可能是个例外,但是对于此外的所有应用来说,无论你是想把数据持久化到云端,还是需要与其他用户进行实时交互,都需要让应用与服务器进行交互。 为了实现这一点,Angular提供了一个叫做$ht