SOAP头和HTTP头的区别

33

我正在使用Web服务编写程序,因此需要将一些数据作为消息的头部进行封装。

我想问一下将这些数据放置在SOAP头部还是HTTP头部中,哪个是等效的?


尝试这个:https://dev59.com/bHI95IYBdhLWcg3wzhZ9 - Ayan
1
好的,这并没有澄清这个想法。 - rogue lad
1个回答

56

SOAP 头信息 包含与 SOAP 消息相关的应用程序特定信息,通常包括路由信息、身份验证信息、事务语义等。这些信息是针对 SOAP 消息的,并且独立于 SOAP 使用的传输方式(在本文中指 HTTP)。

HTTP 头信息 定义 HTTP 事务的操作参数,例如正在传输的内容类型、其内容长度、客户端或代理服务器的缓存指令等。这些信息是针对 HTTP 的,与实际使用 HTTP 传输的内容无关(在本例中为 SOAP XML)。

当然,您可以同时使用 HTTP 头和 SOAP 头提供关于 SOAP 消息的应用程序特定信息。SOAPAction HTTP header 是 SOAP 1.1 中朝着此方向迈出的一步。虽然这对服务器有效地路由消息非常有用,而无需查看 SOAP XML 内容(如果消息已加密且仅最终接收者知道如何解密,则有时无法查看),但它往往会引起混淆,并在 SOAP 1.2 中被删除(取而代之的是 application/soap+xml media 类型 上的可选 action 参数,再次作为 HTTP 头信息中的一个值... 哦,好吧... :D)。

因此,SOAP 头和 HTTP 头不同。尽管您可以在某种程度上使用自定义的 HTTP 头替换 SOAP 头,但大多数情况下这是一个不好的想法。

如果数据是用于 Web 服务,则应将其放置在 SOAP 头中。HTTP 头通常在 Web 服务器处停止,而完整的 SOAP 消息将向下传递到需要该数据的最终接收者(甚至可能通过更多中介人员传递给其他人也可能需要该数据)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接