为什么 URL 的哈希部分在服务器端不可用?
2022-08-30 11:11:11
例如,如果我输入网址:
http://www.foo.com/page.php?parameter=kickme#MOREURL
然后在服务器上没有部分:#MOREURL
是否可以在没有jQuery AJAX的情况下将这些部分发送或获取到服务器?
例如,如果我输入网址:
http://www.foo.com/page.php?parameter=kickme#MOREURL
然后在服务器上没有部分:#MOREURL
是否可以在没有jQuery AJAX的情况下将这些部分发送或获取到服务器?
不,它仅适用于浏览器,因此您必须使用Javascript来处理它。服务器无法读取它。
说明:
基本上,页面URL的哈希组件(#符号后面的部分)仅由浏览器处理 - 浏览器永远不会将其传递到服务器。可悲的是,这是HTML标准的一部分,无论您是否使用IE或任何其他浏览器(以及PHP或任何其他服务器端技术),这都是相同的。
以下是维基百科对此的看法:
片段标识符的功能与 URI 的其余部分不同:即,其处理完全是客户端,没有服务器的参与。当代理(如 Web 浏览器)从 Web 服务器请求资源时,代理会将 URI 发送到服务器,但不发送片段。相反,代理等待服务器发送资源,然后代理根据片段值处理资源。在最常见的情况下,代理将网页向下滚动到锚点元素,该元素具有等于片段值的属性字符串。其他客户端行为是可能的
https://www.rfc-editor.org/rfc/rfc2396#section-4
当使用 URI 引用对标识的资源执行检索操作时,可选片段标识符(由交叉阴影 (“#”) 字符与 URI 分隔)由用户代理在检索操作成功完成后解释的其他引用信息组成。因此,它不是 URI 的一部分,但通常与 URI 结合使用。