我正在使用Web服务编写程序,因此需要将一些数据作为消息的头部进行封装。
我想问一下将这些数据放置在SOAP头部还是HTTP头部中,哪个是等效的?
我正在使用Web服务编写程序,因此需要将一些数据作为消息的头部进行封装。
我想问一下将这些数据放置在SOAP头部还是HTTP头部中,哪个是等效的?
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 消息将向下传递到需要该数据的最终接收者(甚至可能通过更多中介人员传递给其他人也可能需要该数据)。