Re: Behavior of Requesting node on a 3XX response in the SOAP HTTP Binding

Anish:

I agree that this whole business of 3XX codes is worth some explicit 
attention, though I dont' feel I yet understand it well enough to endorse 
a proposal to do errata.  We might still find that no changes are needed, 
or else that any changes are too large to qualify as errata.  In that 
second case, we'll have to decide whether they are worth the disruption of 
a new version of SOAP, or perhaps an erratum saying: "This doesn't work 
right, it's broken, we aren't fixing it for awhile if ever, so don't do 
that!"

Anish Karimarkar wrote:

> It is unclear what this means for the
> "http://www.w3.org/2003/05/soap/mep/request-response/"
> MEP. There are several 3XX status codes which
> require different behavior (per HTTP).
> Specifically, 303 requires the requester to use
> the GET method on the resource, whereas typically
> for a 307 the requester will re-POST the same
> message at the new URI available in the Location
> HTTP header.

> If the requester uses a GET method on a 303, is
> the MEP still the request-response MEP? Table 16,
> (which describes the fields in the Init state),
> specifies that the HTTP method is set as per the
> "http://www.w3.org/2003/05/soap/features/web-method/Method"
> which is unchanged after the 3XX response (the
> only thing that changes is the
> 'ImmediateDestination'). OR if a requester uses
> the GET method on receiving a 303 is it conformant
> to the SOAP HTTP binding as defined by SOAP 1.2,
> part 2: Adjunct. There seems to be conflict in
> trying to remain conformant to the HTTP spec and
> the SOAP HTTP binding when a 303 is received.


I'm not an HTTP expert. but I note that RFC 2616 says:

        "The response to the request can be found
        under a different URI and SHOULD be
        retrieved using a GET method on that
        resource. This method exists primarily to
        allow the output of a POST-activated
        script to redirect the user agent to a
        selected resource. The new URI is not a
        substitute reference for the originally
        requested resource. The 303 response MUST
        NOT be cached, but the response to the
        second (redirected) request might be
        cacheable."

If we want to support use of 303, then it seems to me that the MEP is 
still request/response and the WebMethod is still post.  I read this as: 
"You did a POST and the usual way to get the Response is that it comes 
right back.  In this case, you got a 303 telling you to pull the response 
using GET, >however it still is a response to a POST.<  So, I think you're 
using a somewhat more elaborate means to complete the POST, not changing 
the overall intended method to GET."

Again, an HTTP expert should validate my intuition here.

--------------------------------------
Noah Mendelsohn 
IBM Corporation
One Rogers Street
Cambridge, MA 02142
1-617-693-4036
--------------------------------------








Anish Karmarkar <Anish.Karmarkar@oracle.com>
Sent by: xmlp-comments-request@w3.org
08/03/2005 03:49 AM
 
        To:     xmlp-comments@w3.org
        cc:     (bcc: Noah Mendelsohn/Cambridge/IBM)
        Subject:        Behavior of Requesting node on a 3XX response in 
the SOAP HTTP Binding



Per my AI here is the email that I had promised to send regarding the 
behavior of a requesting node on a 3XX redirection status code to a POST 
method.

Table 17 in [1] lists the following as the 'Significance/Action' on 
receiving a 3XX status code --

"The requested resource has moved and the HTTP request SHOULD be retried 
using the URI carried in the associated Location header field as the new 
value for the http://www.w3.org/2003/05/soap/mep/ImmediateDestination 
property."

and the next state defined is: "Init"

It is unclear what this means for the 
"http://www.w3.org/2003/05/soap/mep/request-response/" MEP. There are 
several 3XX status codes which require different behavior (per HTTP). 
Specifically, 303 requires the requester to use the GET method on the 
resource, whereas typically for a 307 the requester will re-POST the 
same message at the new URI available in the Location HTTP header.

If the requester uses a GET method on a 303, is the MEP still the 
request-response MEP? Table 16, (which describes the fields in the Init 
state), specifies that the HTTP method is set as per the 
"http://www.w3.org/2003/05/soap/features/web-method/Method" which is 
unchanged after the 3XX response (the only thing that changes is the 
'ImmediateDestination'). OR if a requester uses the GET method on 
receiving a 303 is it conformant to the SOAP HTTP binding as defined by 
SOAP 1.2, part 2: Adjunct. There seems to be conflict in trying to 
remain conformant to the HTTP spec and the SOAP HTTP binding when a 303 
is received.

It seems to me that an errata that clarifies that a 3XX may change the 
value of "http://www.w3.org/2003/05/soap/features/web-method/Method" 
would allow implementations to be conformant to the HTTP spec and the 
SOAP HTTP binding.

-Anish
--

[1] 
http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#http-reqbindwaitstate

Received on Monday, 8 August 2005 18:38:33 UTC