Thanks for confirming. I will send Massimo a patch.

On Dec 23, 11:56 am, Jonathan Lundell <jlund...@pobox.com> wrote:
> On Dec 23, 2010, at 9:29 AM, Jonathan Lundell wrote:
>
>
>
>
>
>
>
>
>
>
>
> > On Dec 23, 2010, at 9:09 AM, mr.freeze wrote:
>
> >> Given this url:
> >> URL(args=1,vars=dict(v='yes'),anchor='end')
> >> It produces:
> >>http://server/app/default/index/1#end?v=yes
> >> Problem:
> >> request.vars is empty
>
> >> This url:
> >>http://server/app/default/index/1?v=yes#end
> >> request.vars is populated and the anchor works
>
> >> Shouldn't the anchor be at the end of the query string? I'm running
> >> the latest trunk.
>
> > Yes; that's an error, per RFC 3986.
>
> >      URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
>
> > Not only that, but '?' is legal in a fragment identifier, as is '=', so in 
> > your first example, "end?v=yes" is itself the entire (legal) anchor.
>
> > I wouldn't be terribly surprised if some browsers treated this 
> > inconsistently, but we should be adhering to the RFC here.
>
> > The fix looks easy; change:
>
> >    if anchor:
> >        other += '#' + urllib.quote(str(anchor))
> >    if vars:
> >        other += '?%s' % m_vars
>
> > to:
>
> >    if vars:
> >        other += '?%s' % m_vars
> >    if anchor:
> >        other += '#' + urllib.quote(str(anchor))
>
> > ...and fix the doctest. Though I'm not sure that urllib.quote is right for 
> > an anchor.
>
> Following up: as I read the RFC, the quoting doesn't hurt.

Reply via email to