- From: <noah_mendelsohn@us.ibm.com>
- Date: Wed, 8 May 2002 12:02:42 -0400
- To: Mark Baker <distobj@acm.org>
- Cc: Henrik Frystyk Nielsen <henrikn@microsoft.com>, xml-dist-app@w3.org
Mark Baker writes:
>> I wonder how many SOAP developers are under the impression that if
>> they send a SOAP message to an arbitrary URI, and get a 200 response
>> back, that this means that the SOAP message was processed? More than
>> a few, I would expect. Noah's GET-in-SOAP pseudo-proposal[1] appears
>> to work this way.
Let's separate my GET proposal from the existing HTTP Binding. The
existing binding mandates that a 200 response to the Post be accompanied
by a proper SOAP envelope. The two come together. That means one of
three things, I think (a) the SOAP message was processed, producing the
envelope that's been received (b) the implementation at the other end
intends to be a SOAP implementation but is buggy...it has produced what
appears to be a SOAP envelope without actually doing conforming processing
or (c) through some fluke, an HTTP responder which never intended to be a
SOAP node miraculously produced a legal response envelope when confronted
with the POST. Frankly, I find (c) not worth worrying about at all, and
(b) only slightly more interesting. I think if I were worried about (b) I
would use application-level checking, as for any other buggy HTTP server
response.
The case (c) that I suggested as implausible with post is indeed quite
plausible with a GET binding such as mine. Two scenarios become nearly
indistinguishable (1) a SOAP node does a GET to what it expects is a SOAP
node. It expects that SOAP node to do SOAP-level application processing,
and respond with a SOAP envelope (2) a SOAP node does a GET with no
expectation that there is a SOAP node at the other end. It expects
Apache, IIS or some such to just send back documents that happen to be of
the SOAP MIME type. As things stand, the differences on the traffic on
the wire is essentially the same for the two cases! The differences may
sometimes be observed if SOAPAction is used, as that would sure signal a
SOAP node as the sender.
It was exactly this realization that led me to suggest that we add a
SoapVersion HTTP header, to be used whether or not SOAPAction is used.
This would allow a receiver to reliably determine whether traffic
originated at (what claimed to be) a SOAP node or an "ordinary" http
server. Because the wire formats are otherwise compatible, it's
intentional that SOAP nodes can interop with non-SOAP nodes, >>>but I
believe we need a different MEP for that<<. Our current MEP, which my GET
proposal uses, is clear that there are SOAP nodes at both ends, with SOAP
messages going both ways. I believe the appropriate MEP for an "ordinary"
get would be:
1) A non-SOAP get request sent in binding-specific manner
2) A SOAP response.
In other words, there is only one SOAP message in this pattern,
originating from the responder. The differences can be observed if you
consider gateway scenarios with intermediaries. My GET request is subject
to SOAP intermediary rules and can be relayed. For a request modeled as
binding-specific this cannot the done in a standard manner.
------------------------------------------------------------------
Noah Mendelsohn Voice: 1-617-693-4036
IBM Corporation Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142
------------------------------------------------------------------
Received on Wednesday, 8 May 2002 12:19:33 UTC