|
|
 | | From: | Nisse_Engström | | Subject: | Unsolicitied URL correction | | Date: | Sun, 16 Jan 2005 16:33:00 +0100 |
|
|
 | I was doing some testing, and entered a misspelled URL in Opera's adress field:
http://foo.test/%7o/
I then entered the correct URL:
http://foo.test/%70/
Results:
Visible in URL field Sent in HTTP Request -------------------- -------------------- Opera 7.54 : http://foo.test/x/ GET /%7o/ HTTP/1.1 Opera 7.60p1 : http://foo.test/x/ GET /%7o/ HTTP/1.1 Opera 7.60p2 : http://foo.test/x/ GET /%7o/ HTTP/1.1 Opera 7.60p3 : http://foo.test/x/ GET /%7o/ HTTP/1.1 Opera 7.60p4b: http://foo.test/%7o/ GET /%7o/ HTTP/1.1 Opera 7.60p4c: http://foo.test/%7o/ GET /%7o/ HTTP/1.1 Opera 8.00b1 : http://foo.test/%7o/ GET /%7o/ HTTP/1.1
What's going on here? Why does Opera insist on requesting an unrelated and *invalid* URL, rather than the one I typed in?
--n
|
|
 | | From: | Yngve Nysaeter Pettersen | | Subject: | Re: Unsolicitied URL correction | | Date: | Mon, 17 Jan 2005 21:40:38 GMT |
|
|
 | On Sun, 16 Jan 2005 16:33:00 +0100, =?ISO-8859-1?Q?Nisse_Engstr=F6m?= wrote:
>I was doing some testing, and entered a misspelled URL >in Opera's adress field: > > http://foo.test/%7o/ > >I then entered the correct URL: > > http://foo.test/%70/ > >Results: > > Visible in URL field Sent in HTTP Request > -------------------- -------------------- > Opera 7.54 : http://foo.test/x/ GET /%7o/ HTTP/1.1 > Opera 7.60p1 : http://foo.test/x/ GET /%7o/ HTTP/1.1 > Opera 7.60p2 : http://foo.test/x/ GET /%7o/ HTTP/1.1 > Opera 7.60p3 : http://foo.test/x/ GET /%7o/ HTTP/1.1
The visible display was a bug in the deescape-for-display code that has now been fixed.
> Opera 7.60p4b: http://foo.test/%7o/ GET /%7o/ HTTP/1.1 > Opera 7.60p4c: http://foo.test/%7o/ GET /%7o/ HTTP/1.1 > Opera 8.00b1 : http://foo.test/%7o/ GET /%7o/ HTTP/1.1 > > >What's going on here? Why does Opera insist on requesting >an unrelated and *invalid* URL, rather than the one I >typed in?
AFAICT what Opera sends is what is in the address field the "%7o" URL when that is entered, the "%70" when that is entered.
The %7o URL was what you entered, and it is what Opera stores in its URL database. It may decode the %XX representation for display purposes, but what you entered is what it will send to the server (although Opera may escape characters on its own accord, as well). (In the "x" cases what is displayed is due to a bug.)
In the case of "%70" which is a valid %XX code Opera will display that in the address field as "p", since that is a more readable form of the escapecode, but it will send "%70" since that was what you entered, and the URI/HTTP specs specifically says that you should not deescape unncessarily. If you later uses enter the same URL but replaces "%70" with the letter "p" instead, Opera will still use the "%70" version if it is still in the cache/visited links database since the two versions are equivalent and the server must accept both as the same (except for special characters).
|
|
 | | From: | Nisse_Engström | | Subject: | Re: Unsolicitied URL correction | | Date: | Tue, 18 Jan 2005 09:53:51 +0100 |
|
|
 | Yngve Nysaeter Pettersen wrote: > On Sun, 16 Jan 2005 16:33:00 +0100, =?ISO-8859-1?Q?Nisse_Engstr=F6m?= > wrote: > > >What's going on here? Why does Opera insist on requesting > >an unrelated and *invalid* URL, rather than the one I > >typed in? > > AFAICT what Opera sends is what is in the address field the "%7o" URL > when that is entered, the "%70" when that is entered. > > The %7o URL was what you entered, and it is what Opera stores in its > URL database. It may decode the %XX representation for display > purposes, but what you entered is what it will send to the server > (although Opera may escape characters on its own accord, as well). (In > the "x" cases what is displayed is due to a bug.)
I see that a clarification is necessary. (I should have been clearer in the first article. Sorry about that.)
If I enter "%7o", Opera displays "%7o". If I enter "%70", Opera *changes* it to "%7o".
And this remains even after I clean out the typed in and visited URLs.
New tests, with different domains to get around the tainted URL cache:
[Entered IN THE ORDER LISTED]
URL Entered URL displayed ----------- ------------- http://1.test/%70/ http://1.test/p/ http://1.test/%71/ http://1.test/q/ http://1.test/%7e/ http://1.test/~/ !! http://1.test/%7g/ http://1.test/p/ !! http://1.test/%7h/ http://1.test/p/
http://2.test/%7g/ http://2.test/%7g/ !! http://2.test/%7h/ http://2.test/%7g/ !! http://2.test/%70/ http://2.test/%7g/ http://2.test/%71/ http://2.test/q/ http://2.test/%72/ http://2.test/r/ !! http://2.test/p/ http://2.test/%7g/ http://2.test/q/ http://2.test/q/
http://3.test/%7h/ http://3.test/%7h/ !! http://3.test/%7g/ http://3.test/%7h/ !! http://3.test/%70/ http://3.test/%7h/ http://3.test/%71/ http://3.test/q/ http://3.test/%72/ http://3.test/r/ !! http://3.test/p/ http://3.test/%7h/ http://3.test/q/ http://3.test/q/
It looks as if invalid characters in an escape sequence are incorrectly decoded to '0'.
This took place on Windows 98SE, Opera 8.00b.7401. No round-trip to a proxy or server was made this time.
--n
|
|
 | | From: | Yngve Nysaeter Pettersen | | Subject: | Re: Unsolicitied URL correction | | Date: | Tue, 18 Jan 2005 15:10:24 GMT |
|
|
 | On Tue, 18 Jan 2005 09:53:51 +0100, =?ISO-8859-1?Q?Nisse_Engstr=F6m?= wrote:
>Yngve Nysaeter Pettersen wrote: >> On Sun, 16 Jan 2005 16:33:00 +0100, =?ISO-8859-1?Q?Nisse_Engstr=F6m?= >> wrote: >> >> >What's going on here? Why does Opera insist on requesting >> >an unrelated and *invalid* URL, rather than the one I >> >typed in? >> >> AFAICT what Opera sends is what is in the address field the "%7o" URL >> when that is entered, the "%70" when that is entered. >> >> The %7o URL was what you entered, and it is what Opera stores in its >> URL database. It may decode the %XX representation for display >> purposes, but what you entered is what it will send to the server >> (although Opera may escape characters on its own accord, as well). (In >> the "x" cases what is displayed is due to a bug.) > >I see that a clarification is necessary. (I should have >been clearer in the first article. Sorry about that.) > >If I enter "%7o", Opera displays "%7o". >If I enter "%70", Opera *changes* it to "%7o".
I fixed part of that problem yesterday, and completed the fix today. Ot was a couple of problems related to how escaped characters was handled when illegal characters was used in the %XX segments.
Thanks for the heads up.
|
|
|