- From: Larry Masinter <LMM@acm.org>
- Date: Tue, 9 Jul 2002 08:24:05 -0700
- To: <URI@w3.org>
-----Original Message----- From: Henry Holtzman [mailto:holtzman@mit.edu] Sent: Tuesday, July 09, 2002 7:28 AM To: Larry Masinter Cc: Roy Fielding; 'Tim Berners-Lee'; howcome@opera.com Subject: RE: rfc2396 versus rfc1808 issue .... Dear Sirs, rfc2396 specifies a different browser behavior from rfc1808 in a particular situation that I believe may be unintentional. IE & Netscape implement the rfc1808 behavior while Opera implements the rfc2396 behavior. As appendix G of rfc2396 makes no mention of this change, we would appreciate your opinion on the matter. In rfc1808, when the relative URL has no path component, but has a fragment or a query, the client is supposed to skip step 6 of forming the absolute URI. In step 6, among other things, the base URI is stripped of all characters beyond the final "/". In rfc2396, when the relative URI has no path and has a fragment, it is specified that processing should be stopped as no new document should be loaded, but rather navigation within the document is specified. This change is explained in appendix G. However, when there is no path component, but there is a query component, processing continues. The instruction to skip stripping the post-final-/-characters is gone in rfc2396, which means that the final part of the base URI is stripped and so the query is not performed on the same page as was loaded (unless that page's URI ended with a "/". Was this change between rfc1808 and rfc2396 intended? The following small php application illustrates the issue. You can run it at http://www.media.mit.edu/opera/r-url.php. You will note that Opera (6.03) behaves very differently from Netscape and IE when executing this page. With IE and Netscape, you can navigate within the application. With Opera, when you click on the links within the app, you get an index page of the directory containing the app. It is my belief that the final characters should *not* be stripped, and that rfc2396 should be amended to skip the stripping in the case of a relative URI with only a query component. Thank you for your attention, Henry Holtzman, MIT Media Lab <html> <head> <title>Example application using empty path relative URLs</title> </head> <body> <h4>Example application using empty path relative URLs</h4> <?php if ($action=="here") { ?> Thank you for clicking here!<br><br> <?php } else if ($action=="there") { ?> Hey, you weren't supposed to click there!<br><br> <?php } ?> Please click <a href="?action=here">here</a>.<br> Please do not click <a href="?action=there">there</a>.<br> <br> Thank you. </body> </html> --------
Received on Tuesday, 9 July 2002 11:23:56 UTC