- From: Sandro Hawke <sandro@w3.org>
- Date: Sun, 28 Sep 2014 23:54:44 -0400
- To: Matthew Kerwin <matthew@kerwin.net.au>
- CC: Julian Reschke <julian.reschke@gmx.de>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <5428D804.4020606@w3.org>
On 09/28/2014 07:13 PM, Matthew Kerwin wrote:
> On 29 September 2014 07:04, Sandro Hawke <sandro@w3.org
> <mailto:sandro@w3.org>>wrote:
>
> On 09/28/2014 03:14 PM, Julian Reschke wrote:
>
> On 2014-09-28 21:01, Sandro Hawke wrote:
>
> On 09/28/2014 03:20 AM, Julian Reschke wrote:
>
> On 2014-09-28 01:57, Sandro Hawke wrote:
>
> ...
>
> Why don't you just make it:
>
> Prefer: retrieve-contents-of-303-target
>
> (with a more suitable name...)
>
>
> Hmmm. What do you think about the rest of the
> proposal? Do you
> prefer this header-based design over the
> response-code based one? Are
> you okay with both or neither or just this one?
>
>
> My point being is that you don't need a new header
> field, just the
> prefer parameter.
>
>
> Okay.... So the presence of "Preference-Applied:
> retrieve-content-of-303-target" (or whatever it ends up
> called, maybe
> just "follow-303") in the response headers would have the
> same semantics
> as the 2NN Contents Of Related response code would have!
> (And a Location
> header would be added saying where we ended up.) Yes, as
> far as I can
> see that would work technically. Nice and simple. I
> like it.
>
>
> It would be "retrieve", not "follow". So you'd still get a
> 303, but the response body would be for the resource Location
> points to.
>
>
> I think the response code would need to be 200, not 303. I've
> been told things wont work well with 3xx responses having bodies.
>
>
>
>
> If it's 200 you have to be careful to set the cache control headers
> etc. so that intermediate caches don't screw things up.
It sounds like you don't trust the Vary: Prefer to do its job. Are you
just being cautious, or is there reason to think Vary doesn't actually
work (or perhaps that I'm misunderstanding what it does).
> At least with a 303 the default/naive behaviour is closer to what you
> want anyway. (I.e. in the worst case, the right thing happens, albeit
> slower)
>
Except if intermediate system wont even pass any body through with a 3xx
response code. That's what I was told, but I haven't done any kind of
survey.
>
>
>
>
> Really I'd suggest the response code should be whatever the target
> of the 303 provides.
>
>
>
>
> If it would have been anything other than 200, the server shouldn't
> send it. Just send the original 303. Maybe add a warning or something
> ("If you get that it might fail").
>
>
>
>
>
>
> Also, all the headers should be what the target of the 303
> provides, except the Preference-Applied and Vary: Prefer.
>
>
>
>
> That's why it's risky to send a 200. If you send a 303 it's clear
> (to both endpoints, and to any intermediaries) that the metadata
> applies to the *requested* resource. If you ask me, "follow redirect"
> is a dangerous metaphor, and it might be better to instead use an
> encapsulation metaphor. In the current world, the response to "GET
> /foo" is "You should see /foo/bar instead" -- everyone understands
> that, things happen. I suggest the response to "GET /foo, but also
> send me the eventual response if there's a redirect" should be "You
> should see /foo/bar instead, which is: {...}". Uninformed brainstorm
> thought: send a 303 with "content-type:message/http"; might need a bit
> more machinery in the client, not sure how much though.
>
> A dumb cache that doesn't understand the "which is..." part either: 1)
> passes everything through as-is, and everyone is happy; or 2) strips
> the unknown bits and you're left with a 303, and everyone gets to the
> right place eventually.
>
Yes, there's a lot to be said for this design (sending 303 and a body),
if it would work. I only have it second hand that it doesn't work, so
I don't even know the original source of my claim that it doesn't.
>
>
>
>
>
> To my ear that sounds like the server "following" the 303, but I'm
> not attached to that terminology. "retrieve" doesn't seem quite
> right since in many cases it'll actually be on the same server.
> Maybe "respond-as-if-from-target-of-303"? How about
> "if-303-provide-content"?
>
>
> If you want advice on colouring, I quite like the shade of "indirect".
> However if you switch to an encapsulation metaphor, something along
> the lines of "Prefer: include-other" isn't too bad. (I keep coming
> back to the word "other" because 303 is "See Other", and that "other"
> is what we're including.)
Understood, thanks.
-- Sandro
>
> --
> Matthew Kerwin
> http://matthew.kerwin.net.au/
Received on Monday, 29 September 2014 03:54:55 UTC