web-dev-qa-db-fra.com

SOAP en-têtes par rapport aux en-têtes HTTP

Je travaille sur un programme utilisant des services Web et pour cela, je dois envelopper certaines données comme en-têtes pour le message.

Je veux demander s'il est équivalent de placer ces données en tant qu'en-têtes SOAP ou en-têtes HTTP?

29
rogue lad

Les en-têtes SOAP contiennent des informations spécifiques à l'application liées au message SOAP. Ils contiennent généralement des informations de routage, des informations d'authentification, la sémantique des transactions, etc.) Ils sont spécifiques au message SOAP et sont indépendants du transport utilisé par SOAP (dans le cadre de cet article: HTTP).

en-têtes HTTP définissent les paramètres de fonctionnement de la transaction HTTP, comme le type de contenu de ce qui est transmis, la longueur du contenu, les directives de cache pour les clients ou les proxys etc. Ceux-ci sont spécifiques à HTTP et sont indépendants de ce qui est réellement transmis avec HTTP (dans ce cas, le SOAP XML).

Vous pouvez bien sûr utiliser les deux en-têtes HTTP ou SOAP en-têtes pour fournir des informations spécifiques à l'application sur le message SOAP. l'en-tête HTTP SOAPAction) était un pas dans cette direction pour SOAP 1.1. Bien qu'il soit utile pour les serveurs de router efficacement les messages sans avoir besoin de regarder à l'intérieur du XML SOAP (parfois impossible si le message est crypté et que seul le destinataire final sait comment le décrypter), il a surtout causé de la confusion et a ensuite été supprimé en SOAP 1.2 (et à sa place est un optionnel action paramètre sur le application/soap+xml media type , qui est encore une valeur dans les en-têtes HTTP ... eh bien ...: D).

En conclusion, les en-têtes SOAP et les en-têtes HTTP ne sont pas les mêmes . Bien que vous puissiez dans une certaine mesure remplacer les en-têtes SOAP par des en-têtes HTTP personnalisés définis par l'utilisateur, c'est la plupart du temps une mauvaise idée.

Si les données sont destinées au service Web, elles doivent être placées à l'intérieur des en-têtes SOAP. Les en-têtes HTTP s'arrêtent généralement sur le serveur Web tandis que le message SOAP l'intégralité sera transmise en aval au récepteur final qui a besoin des données (peut-être même en passant par plus d'intermédiaires qui pourraient également en avoir besoin).

53
Bogdan