var x = new XMLHttpRequest(); x.open("GET", "foo", true); x.send("bar");
Under my system the request is sent to "http://en.wikipedia.org/wiki/foo". The "Rome" in the URL is simply ignored. The same request with a trailing slash in the URL ("http://en.wikipedia.org/wiki/Rome/") appends the "foo" to the full URL.
(I asked a similiar question before, but more jQuery specific, where this also happens. I hope I get a better answer with this somewhat more library independent question.)
(updated to make it more readable)
This is how relative paths is supposed to work.
Pretend that the current address is this:
If you specify only a new filename "foo", you get the same protocol, host and dirs, only the file name is changed:
If you specify a whole path "/dir3/filename2" you get the same protocol and hostname but with another path:
You can also specify host name "//another.domain.name/dir5/filename3" and get the same protocol but another host, dir and filename:
What might be confusing is that a webserver internally can add a / at the end of the url if the specified url points to a directory and not to a file.
If "somename" is a directory the webserver might translate it to (possible with a redirect)
Looks like http://code.google.com/p/js-uri/ is the library of choice for URL manipulation in general and this type of absolute-to-relative computation in particular:
new URI(potentiallyRelativeLink).resolve(new URI(window.location.href)).toString()
©2020 All rights reserved.