Zar*_*doz 33 javascript 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");
Run Code Online (Sandbox Code Playgroud)
在我的系统下,请求被发送到" http://en.wikipedia.org/wiki/foo ".URL中的"罗马"只是被忽略了.URL中的尾部斜杠的相同请求(" http://en.wikipedia.org/wiki/Rome/ ")将"foo"附加到完整URL.
这似乎使得在Javascript中编码正确的URL非常困难.是否有任何Javascript库有助于克服此问题?
(之前我问了一个类似的问题,但更多的是jQuery特定的,这也发生了.我希望通过这个更独立于库的问题得到更好的答案.)
som*_*ome 56
(更新以使其更具可读性)
这就是相对路径应该如何工作的方式.
假装当前地址是这样的:
绝对: 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"并获得相同的协议,但另一个主机,目录和文件名:
相对: //another.domain.name/dir5/filename3
绝对: protocol://another.domain.name/dir5/filename3
可能令人困惑的是,如果指定的url指向目录而不是文件,则web服务器内部可以在url的末尾添加/.
protocol://some.domain.name/somename
如果"somename"是一个目录,则Web服务器可能会将其转换为(可能通过重定向)
protocol://some.domain.name/somename/
UPDATE
正如Cameron在评论中所说:作为参考,请参阅RFC 1808第4节中的步骤6
| 归档时间: |
|
| 查看次数: |
46364 次 |
| 最近记录: |