- From: Christopher Ferris <chris.ferris@sun.com>
- Date: Wed, 27 Mar 2002 14:38:57 -0500
- To: xml-dist-app@w3.org
Mark, I want to draw what I understand to be a clear distinction between the example that you used in [1] and SOAP's Fault. Mark Baker previously wrote: > This is not a REST specific problem, it's specific to all non-tunnelled > uses of an underlying protocol that distinguishes between "data" and > "error" on responses (i.e. application protocols). > > For a real-life example of this, consider the difference between these > two URIs. > > http://www.ibiblio.org/not-a-real-resource > http://www.ibiblio.org/404 > > The former is not a real URI, and so it is returned with a 404 status > code. The latter identifies what is returned when a resource is not > found, but invoking GET on it returns the *same content* as a 404, but > with a 200 response code, ensuring that the browser can bookmark it, > cache it, etc.. > <snip/> What occurred to me when thinking about this issue is that there are NO processing semantics associated with the HTML content returned in either case for the URI's you cite aside from the rendering itself. The content of the entity body returned on a 404 is (potentially) orthogonal to the HTTP status response. It could just as easily be: <html><head></head><body><p>Sorry... Have a nice day! :)</p></body> as: <html><head></head><body><p>MwaaaHaHaHaHa!</p></body> as: <html><head></head><body><p>Doh!(tm)</p></body> In fact, one of the side issues raised against the original resolution to issue #12[2] went directly to the point that it isn't uncommon for proxies and/or the origin server itself to substitute the entity body returned with something else. To an HTTP UA (browser), the content of the entity body of an HTTP 4xx response is completely opaque. Likely, only the content-type is material to the UA so it can figure out how it should be rendered, and whether the response was a 200 or a 404 doesn't matter to the rendering software. The difference I see between your example above and SOAP is that a SOAP Fault *has* specific semantic *meaning* *in and of itself* by virtue of the qualified name of the SOAP Fault EII when it is present as a/the direct child of the SOAP Body EII. It is that semantic meaning that the SOAP processor uses to recognize a Fault. In fact, in practice it would be impossible to know with any degree of certainty whether the distinction between the responses of the two URIs you cite was intentional or unintentional (e.g. a software bug in which the origin server returned the entity body associated with a 404 HTTP status response but neglected to set the HTTP status value accordingly or a mis-configured origin server in which the administrator placed an incorrect resource URI in the property that the server uses as the entity body of a 404 response). In HTTP, the semantics of a fault are present *exclusively* in the HTTP Status Response Code whereas in SOAP, the semantics of a fault are (IMO) exclusively embodied in the SOAP message itself regardless of the underlying protocol used to transport or transfer the message from node to node. Okay, so the resolution to issue #12 is (essentially) that the SOAP HTTP binding will respect this situation, and map SOAP Fault responses to corresponding/appropriate HTTP Status Code Responses. I think that it is only fair that an underlying protocol such as HTTP NOT modify the semantics of a SOAP message, be it a SOAP Fault or otherwise. Cheers, Chris [1] http://lists.w3.org/Archives/Public/xml-dist-app/2002Mar/0023.html [2] http://www.w3.org/2000/xp/Group/xmlp-issues.html#x12 Mark Baker wrote: > Noah, > > >>The second point above makes clear that no binding can make a >>determination as to how a SOAP envelope is to be interpreted; >> > > This statement appears to assume that the binding is somehow a separate > layer that only sees the envelope given to it by a SOAP processor. I > see no such distinction in any of our work, nor do I believe it > necessary. I believe we've had this discussion before, with Henrik > taking the same position that I'm taking (IIRC). The developer should > know which application protocol they're using. > > IMO, this is yet another artifact of the chameleon/tunnel distinction. > > >>In short, I disagree strongly with the suggestion that any binding would >>be the principal determinant of whether a message carried a SOAP fault. I >>do think that a well constructed binding can ensure that there is never >>disagreement between what's in the envelope and signals encoded in the >>underlying protocol. In such cases, the binding-specific signal may be >>taken as a highly reliable hint. >> > > I understand. > > Are you ok with the resolution to issue 12? > > MB >
Received on Wednesday, 27 March 2002 14:39:55 UTC