[Interest] bug with # in URL when using setUrl?

Larry Martell larry.martell at gmail.com
Tue Mar 15 17:04:34 CET 2016


On Tue, Mar 15, 2016 at 11:54 AM, Thiago Macieira
<thiago.macieira at intel.com> wrote:
> On terça-feira, 15 de março de 2016 11:45:12 PDT Larry Martell wrote:
>> >>     QString urlStr = "http://foo.bar.com:8000/#/workitem/12345";
>> >>     QUrl reportUrl(urlStr);
>> >
>> > So I'm assuming you're misusing the term and that you did want a fragment.
>>
>> I realize that using # is typically a fragment, but apparently that is
>> not how Angular uses that character. If you look at
>> http://stackoverflow.com/questions/14319967/angularjs-routing-without-the-ha
>> sh you will see what I am referring to.
>
> That page is gibberish to me. I can't understand anything of that.

Nor can I.

> To make matters short, these two URLs are different:
>
> http://foo.bar.com:8000/#/workitem/12345
>         scheme = http
>         authority = foo.bar.com:8000
>         path = /
>         fragment = /workitem/12345
>
> http://foo.bar.com:8000/%23/workitem/12345
>         scheme = http
>         authority = foo.bar.com:8000
>         path = /#/workitem/12345

Not quite.

When http://foo.bar.com:8000/#/workitem/12345/abcd is sent by the
client (which is what happens on a Mac) what the server sees is:

POST /workitem/12345/abcd

And the request is successfully served.

But when the URL does not have the # (i.e.
http://foo.bar.com:8000/workitem/12345/abcd, which is what happens on
Windows) the server sees this:

GET /workitem/12345

And that returns a 404.

This mapping of the URL is done by the Angular code when it sees the
#. On Windows it does not get it. I tried with the %23 and that
doesn't work on either platform.



More information about the Interest mailing list