#295: Applying original fragment to "plain" redirected URI (also #43)

New issue: <http://trac.tools.ietf.org/wg/httpbis/trac/ticket/295>

As Eric Lawrence pointed out on his blog:

we don't define what happens when a request-URI has a fragment identifier and is redirected, but the Location header payload doesn't.

As mentioned in #43, an old I-D did specify behaviour here:


If the server returns a response code of 300 ("multiple choice"), 301 ("moved permanently"), 302 ("moved temporarily") or 303 ("see other"), and if the server also returns one or more URIs where the resource can be found, then the client SHOULD treat the new URIs as if the fragment identifier of the original URI was added at the end.

By my testing <https://gist.github.com/330963>*, IE (6 to 9)** and Safari do not apply the fragid (T4 and T8), whereas Opera, Chrome and Firefox do. If anyone has results from other implementations, they'd be most welcome.

I see two possible ways forward:
  1) As with #43, explicitly state that there isn't interop here.
  2) Define interop along the lines of draft-bos-http-redirect.

I realise that #2 would break some existing implementations, but I've seen evidence of some real interop pain here, and defining interop where the spec is cloudy *is* within our charter. 

However, I'd really like to hear from implementers as to whether they'd be willing to change their implementations before going down that path.

Regarding #43 <http://trac.tools.ietf.org/wg/httpbis/trac/ticket/43>, my most recent testing indicates that, putting aside T4 and T8, there *is* interop on fragment combination for IE6-9, Safari 5, Chrome (current), FF4, FF3.6.15, FF3.0.11, and Opera 11.10.

This makes me wonder if we should, given this new information, re-open #43 and define precedence rules for fragment combination upon redirects. Thoughts? 


* Note that the "PASS/FAIL" terminology in those tests is misleading, as it assumes the semantics defined in draft-bos-http-redirect.

** IE 6-9 are interesting, in that the location bar URI does not reflect the fragment, nor is it available in JavaScript's location.hash; however the document *does* scroll to the appropriate place on the page when following the link.

Mark Nottingham   http://www.mnot.net/

Received on Friday, 27 May 2011 03:32:39 UTC