Re: Fragments in HTTP redirects

On Tue, 17 Aug 2010, Jonathan Rees wrote:

> It looks like the consensus on http-wg is that the second fragid
> overrides the first, i.e. if we want A#B and A -> 30x Location: C#D,
> then A#B is to be interpreted like C#D (as is A#W, A#J, etc.).
>
> There is a web architecture view of #, which is that A#B designates
> secondary resource B as defined in one of the 'representations' of
> <A>. Maybe we can agree that if A redirects to C#D and C#D designates
> (per C's 'representation's' media type) an HTML element or some other
> inherently fragment-like thing, then A#B should be treated like C#D,
> discarding the 'B': A#B ~= A.
>
> But if C#D designates a secondary resource that itself has
> 'representations' and tertiary resources, then it's sensible for A#B
> to be treated like B as defined in C#D, and not like C#D itself. If
> you buy this idea, you wouldn't want the HTTP spec to rule out
> interpreting A#B that way - that's not its jurisdiction. In fact I
> think 3986 already points in this direction.
>
> In practice, nontrivial tertiary resources can only arise via RDF, and
> don't occur in the wild AFAIK. Weird non-deployed RDF is of interest
> to only a handful of fanatics.
>
> This is a rathole. Simple solutions:
> - TimBL: no change to HTTP (disallow Location: C#D)
Easiest solution, conflict with current practise.

> - HTTPbis: pretend RDF doesn't exist (always discard first fragid even
> when meaningful)
In fact it would be pretending that fragment handling and combination is 
independent from the media type.

In browsers, we are just testing HTML's way of handling fragment, which is 
absolute references, that case is the easiest. If you add in the equation 
the possibility of having "relative" fragments (like "2nd <foo>" in 
xpointer), the issue is more complicated.

A#B with A => C#D

In the case of HTML, we have the following cases:
1/ #B exist in C
2/ #B does not exist in C, but #D exists
3/ #B and #D do not exist in C

What _seems_ logical (to me) is:
1/ show C#B uri displayed is C#B
2/ show C#D uri displayed is C#D
3/ show C   uri displayed is C#B

Now, is it safe to assume that #B in C is the right one? then dropping #B 
and trying to display only C#D is the safest choice (pretty much the 
choice of the majority of browsers as of today)


In the SVG case, it is a bit different.
http://www.example.com/sprites#svgView(viewBox(16,16,32,32))
and http://www.example.com/sprites redirects to
http://www.example.com/moresprites#svgView(viewBox(200,0,1200,1000))
What is the desired behaviour?

The intent is to have a relative viewbox, in moresprites#svgView(viewBox(200,0,1200,1000))
Seems logical, but it can become quite complicated.


-- 
Baroula que barouleras, au tiƩu toujou t'entourneras.

         ~~Yves

Received on Tuesday, 17 August 2010 20:35:18 UTC