我遇到了网址的持久部分问题,我们称之为用于导航的#x
。我在服务器端有一个AuthenticationFilter,它将用户重定向到登录页面。问题是我无法让这个#x
消失。在服务器端,当我单步执行重定向的Java代码时,我将URL视为/login?redirectUrl=%2Fprevious%2Flocation
。但是,在客户端,这实际上是/login?redirectUrl=%2Fprevious%2Flocation#x
。据我所知,这些数据实际上从未发送到服务器。我的问题是如何强制服务器告诉客户端放弃?我是否必须切换到客户端重定向?
答案 0 :(得分:0)
可能的情况是,浏览器端的某些javascript实际上是添加了#x
,您需要在浏览器端修复它。
要验证这一点,请使用浏览器检查工具+网络选项卡查看浏览器和服务器发送的实际请求+响应标头。
如果服务器发送类似302 Redirect
的内容,其响应Location
标头将包含它希望浏览器使用的URI。如果该URI不包含#x
,那么您知道浏览器本身正在添加#x
。
虽然服务器可以在其#x
响应标头中发送Location
,但浏览器永远不会将其发送回服务器。
答案 1 :(得分:0)
这可以通过像这里的几个问题来回答 - URL hash is persisting between redirects。我最终做了一个客户端重定向以避免这个问题。
答案 2 :(得分:0)
哈希永远不会发送到服务器。所以,如果你要求一个网址 example.org/my-account-overview#profile 服务器只获取请求的资源url example.org/my-account-overview
如果您发送重定向,则浏览器应该请求新的网址并在哈希本身后自动添加哈希值和值。