SOAP标头与HTTP标头

时间:2012-07-12 05:18:52

标签: web-services soap http-headers soapheader

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

我想问一下这个数据是等同于将这些数据作为SOAP标头还是HTTP标头?

1 个答案:

答案 0 :(得分:52)

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标头不一样。虽然在某种程度上您可能会将SOAP标头替换为用户定义的自定义HTTP标头,但在大多数情况下这是一个坏主意。

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