使用text / plain作为XML over HTTP的内容类型有哪些潜在问题?

时间:2011-11-10 06:02:21

标签: java .net xml http rest

我正在开发一个第三方运行.NET环境的项目,该项目提供通过HTTP发送和接收XML的REST样式服务。我的项目实际上完全是在一台单独的机器上使用Java。

我构建了系统的整个Java部分,假设POSTing或PUTing XML文档的内容类型标题等于“application / xml”就可以了(因为它是XML规范和相关RFC的一部分!)

无论如何,现在.NET团队说它必须是text / plain,否则他们的服务器将拒绝该请求,他们似乎无法或不知道如何更改它。

那么,使用普通/文本作为内容类型通过HTTP发送XML会有什么影响?是否有任何微妙的“陷阱”,或者没什么大不了的?

由于

2 个答案:

答案 0 :(得分:4)

除非指定了charset参数,否则text / plain的charset为us-ascii。 mime类型中定义的charset优先于xml文档中定义的charset,因此如果xml文档不是us-ascii,则正确的客户端会错误地解析xml。

4.1.2 of RFC 2046表示对于text / plain,

  

默认字符集,必须在没有的情况下假定   charset参数是US-ASCII。

即使使用text / xml,默认字符集也是us-ascii,来自3.1 of RFC 3023部分,

  

符合[RFC2046],如果接收到带有的text / xml实体   charset参数省略,MIME处理器和XML处理器必须使用   “us-ascii”的默认字符集值

如果你使用指定了正确字符集的text / plain,现在指定charset两次,所以最好使用没有与之关联的默认字符集的application / xml,并让charset声明为xml文档。

这个here上有一篇有趣的帖子。

答案 1 :(得分:0)

请确保您以后可以追溯到此更改请求,以了解将内容类型设置为text / plain的原因。因此,如果您被查询,您可以查看代码并证明您的实现与原始意图的合理性。