当前位置: 首页 > 面试题库 >

AJAX请求中的相对URL

韩乐湛
2023-03-14
问题内容

为什么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。



 类似资料:
  • 问题内容: 我正在学习AngularJS,并尝试构建从Wordpress获取数据的前端系统。 在后端,一切似乎都已正确设置,当我使用jQuery ajax请求时,它可以毫无问题地获取数据。 但是,当我尝试使用AngularJS做同样的事情时,它不起作用。我正在尝试使用以下代码复制ajax请求: 如果我将其记录下来,它将输出0。我缺少什么? 谢谢你的帮助。 PS控制器如下所示: 问题答案: 在ang

  • 本文向大家介绍Django中的ajax请求,包括了Django中的ajax请求的使用技巧和注意事项,需要的朋友参考一下 需求:实现ajax请求,在界面上任意地方点击,可以成功传参。 创建项目如下所示: settings.py文件的设置,这次我们除了要注册app和设置templates文件夹的路径,还要多设置一下static的路径,代码如下: 首先,先对界面做处理,设置高为100%,然后引入我们所需

  • 问题内容: 我正在使用PHP从远程服务器下载一个(大)文件,并且此下载是通过单击网页上的下载按钮触发的。 因此,当我单击网页上的按钮时,就会向PHP函数发出请求(带有angulars )。该函数使用触发下载。 同时,我想使用Ajax向我的PHP网站提出其他请求。但是,只要下载正在进行,所有其他Ajax请求都会显示状态。 因此,基本上,下载阻止了对PHP的所有其他请求。有什么办法可以避免这种阻塞?

  • 问题内容: 我正在创建一个网站,该网站依赖于对PHP页面的AJAX调用。有没有办法防止访问原始数据?(即通过他们自己的帖子请求访问php文件)。 我想最好的方法(如果可能的话)是防止PHP将数据发送到不来自AJAX的任何内容(因为必须来自同一域)。有什么建议? 问题答案: if (strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH’]) == ‘xmlhttpre

  • 我的Spring Rest控制器有问题。我试图发布(PUT)数据从我的客户端(angularJS)到我的服务器(Spring),但每次我试图发送的东西我得到一个错误。 有了Maven,我在SpringAPI中添加了和。我还使用自动将Jackson消息转换器添加到Spring。在我的Spring控制器中,我使用访问Spring的REST方法。 我的REST API控制器: 我尝试过不同类型的消费:

  • 问题内容: 如何使用jQuery在Grails页面中发出Ajax请求? 如何在Grails Controller上设置击中方法的URL?假设控制器:“机场”,动作:“ getJson”,动作的输入为“ iata”。 我能够将静态网址设置为,但无法弄清楚如何为iata传递输入。 我对Grails并不陌生,并遵循IBM的“掌握Grails”教程系列。建议我给我一些有关将Grails与jQuery一起使