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

标签 java .net xml http rest

我正在从事一个项目,其中第 3 方运行 .NET 环境,提供通过 HTTP 发送和接收 XML 的 REST 风格服务。我这边的项目实际上是完全在一台单独的机器上用 Java 编写的。

我已经构建了系统的整个 Java 部分,假设 POST 或 PUTing XML 文档的内容类型 header 等于“application/xml”会很好(因为它是 XML 规范和相关 RFC 的一部分!) .

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

那么,使用纯文本/文本作为内容类型通过 HTTP 发送 XML 意味着什么?是否存在任何微妙的“陷阱”,或者这没什么大不了的?

谢谢

最佳答案

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

4.1.2 of RFC 2046声明对于文本/纯文本,

The default character set, which must be assumed in the absence of a charset parameter, is US-ASCII.

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

Conformant with [RFC2046], if a text/xml entity is received with the charset parameter omitted, MIME processors and XML processors MUST use the default charset value of "us-ascii"

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

关于这个 here 有一个有趣的帖子.

关于java - 使用 text/plain 作为 XML over HTTP 的内容类型有哪些潜在问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8075570/

相关文章:

java - spring JMX可以在两个不同的bean名称下导出相同的bean实例吗?

java - 如何使用 Hibernate 只更新所有实体属性的一部分

c# - PostSharp 切入点

jquery - 过滤 AJAX get 请求上的 XML 结果

java - 如何根据屏幕尺寸动态改变高度?

c# - NUnit with night build,如何轻松获得错误?

c# - 如何找到树中的下一个元素

java - 对于一个简单的应用程序,我应该使用 XML 文件还是真正的数据库或其他东西?

javascript - 在具有某些参数的 xsl 中调用 javascript 函数

java - Hibernate 教程不起作用