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