【发布时间】:2012-07-11 19:45:48
【问题描述】:
我正在开发一个使用 Web 服务的程序,为此我需要将一些数据包装为消息的标题。
我想问一下,将这些数据作为SOAP headers还是HTTP headers是等价的?
【问题讨论】:
-
嗯,这并不清楚。
标签: web-services soap http-headers soapheader
我正在开发一个使用 Web 服务的程序,为此我需要将一些数据包装为消息的标题。
我想问一下,将这些数据作为SOAP headers还是HTTP headers是等价的?
【问题讨论】:
标签: web-services soap http-headers soapheader
The SOAP headers 包含与 SOAP 消息相关的应用程序特定信息。它们通常包含路由信息, 身份验证信息、事务语义等。这些是特定于 SOAP 消息的,并且独立于 SOAP 使用的传输 (在这篇文章的范围内:HTTP)。
HTTP headers 定义 HTTP 事务的操作参数,例如传输内容的内容类型、内容长度、客户端或代理的缓存指令等。 这些是特定于 HTTP 的,并且独立于通过 HTTP 实际传输的内容(在本例中为 SOAP XML)。
当然,您可以同时使用 HTTP 标头或 SOAP 标头来提供有关 SOAP 消息的应用程序特定信息。
The SOAPAction HTTP header 是 SOAP 1.1 朝着这个方向迈出的一步。虽然它对服务器有效地路由消息而不需要查看内部消息很有用
SOAP XML(如果消息被加密并且只有最终接收者知道如何解密它有时是不可能的)它主要引起混淆,后来在
SOAP 1.2(取而代之的是application/soap+xml media type 上的可选action 参数,这又是HTTP 标头中的一个值……哦,好吧……:D)。
作为结论,SOAP 标头和 HTTP 标头并不相同。尽管在某种程度上您可以用用户定义的自定义 HTTP 标头替换 SOAP 标头,但大多数时候这是一个坏主意。
如果数据用于 Web 服务,那么它应该放在 SOAP 标头中。 HTTP 标头通常停在 Web 服务器上,而整个 SOAP 消息将被向下传递到需要数据的最终接收者(甚至可能通过他们可能也需要数据的更多中介)。
【讨论】: