FW: rfc2396 versus rfc1808 issue

-----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