32

我正在开发一个使用 Web 服务的程序,为此我需要将一些数据包装为消息的标题。

我想问一下,将这些数据作为 SOAP 标头还是 HTTP 标头是否等效?

4

1 回答 1

55

SOAP 标头包含与 SOAP 消息相关的应用程序特定信息。它们通常包含路由信息、身份验证信息、事务语义等。这些特定于 SOAP 消息并且独立于 SOAP 使用的传输(在本文的范围内:HTTP)。

HTTP 标头定义了 HTTP 事务的操作参数,例如传输内容的内容类型、内容长度、客户端或代理的缓存指令等。这些是特定于 HTTP 的,独立于通过 HTTP 实际传输的内容(在这种情况下是 SOAP XML)。

当然,您可以同时使用 HTTP 标头或 SOAP 标头来提供有关 SOAP 消息的应用程序特定信息。 SOAPAction HTTP 标头是 SOAP 1.1 朝这个方向迈出的一步。尽管对于服务器而言无需查看 SOAP XML 内部就可以有效地路由消息很有用(如果消息被加密并且只有最终接收者知道如何解密它有时是不可能的),但它主要引起了混乱,后来在 SOAP 1.2 中被删除(取而代之的是typeaction的一个可选参数,它又是 HTTP 标头中的一个值......哦,好吧......:D)。application/soap+xml media

总而言之,SOAP 标头和 HTTP 标头并不相同。尽管在某种程度上您可能会用用户定义的自定义 HTTP 标头替换 SOAP 标头,但大多数时候这是一个坏主意。

如果数据用于 Web 服务,则应将其放在 SOAP 标头内。HTTP 标头通常停在 Web 服务器上,而整个 SOAP 消息将向下传递到需要数据的最终接收者(甚至可能通过他们可能也需要数据的更多中介)。

于 2012-07-14T07:51:17.620 回答