AJAX请求中的相对URL

为什么Javascript对相对URL与标准HTML有所不同?考虑以下网址(或浏览至该网址):http

:

//en.wikipedia.org/wiki/Rome。打开Firebug控制台(或另一个Javascript控制台),然后输入以下内容:

var x = new XMLHttpRequest();

x.open("GET", "foo", true);

x.send("bar");

在我的系统下,请求被发送到“

http://en.wikipedia.org/wiki/foo

”。URL中的“罗马”将被忽略。URL(“

http://en.wikipedia.org/wiki/Rome/

”)中带有斜杠的相同请求会将“ foo”附加到完整URL。

这似乎使用Javascript编码正确的URL变得非常困难。是否有任何Javascript库可以帮助解决此问题?

(我之前问过一个类似的问题,但更多的是jQuery特有的,这种情况也会在这里发生。我希望我能通过这个与库无关的问题得到更好的答案。)

回答:

(已更新,使其更具可读性)

这就是相对路径应该如何工作的方式。

假设当前地址是这样的:

绝对:protocol://some.domain.name/dir1/dir2/filename


如果仅指定新文件名“ foo”,则将获得相同的协议,主机和目录,只更改文件名:

相对的:foo

绝对:protocol://some.domain.name/dir1/dir2/foo


如果指定整个路径“ / dir3 / filename2”,则将获得相同的协议和主机名,但具有另一个路径:

相对的:/dir3/filename2

绝对:protocol://some.domain.name/dir3/filename2


您还可以指定主机名“ //another.domain.name/dir5/filename3”,并获得相同的协议,但使用另一个主机,dir和文件名:

相对的://another.domain.name/dir5/filename3

绝对:protocol://another.domain.name/dir5/filename3


可能令人困惑的是,如果指定的URL指向目录而不是文件,则Web服务器内部可以在URL的末尾添加/。

protocol://some.domain.name/somename

如果“ somename”是目录,则网络服务器可能会将其转换为目录(可能带有重定向)

protocol://some.domain.name/somename/


正如cameron在评论中所说:作为参考,请参阅RFC1808第4部分中的步骤6。

以上是 AJAX请求中的相对URL 的全部内容, 来源链接: utcz.com/qa/411791.html

回到顶部