Java 发送重定向时强制浏览器从URL删除哈希

Java 发送重定向时强制浏览器从URL删除哈希,java,http,url,web,jetty,Java,Http,Url,Web,Jetty,我遇到了一个URL持久化部分的问题,我们称之为用于导航的x。我在服务器端有一个AuthenticationFilter,它将用户重定向到登录页面。问题是我不能让这个x消失。在服务器端,当我单步执行重定向的Java代码时,我看到URL为/login?redirectUrl=%2Fprevious%2Flocation。但是,在客户端,这实际上是/login?重定向URL=%2Fprevious%2Flocationx。据我所知,这些数据实际上从未发送到服务器。我的问题是如何强制服务器告诉客户机放弃

我遇到了一个URL持久化部分的问题,我们称之为用于导航的x。我在服务器端有一个AuthenticationFilter,它将用户重定向到登录页面。问题是我不能让这个x消失。在服务器端,当我单步执行重定向的Java代码时,我看到URL为/login?redirectUrl=%2Fprevious%2Flocation。但是,在客户端,这实际上是/login?重定向URL=%2Fprevious%2Flocationx。据我所知,这些数据实际上从未发送到服务器。我的问题是如何强制服务器告诉客户机放弃它?我必须切换到客户端重定向吗

浏览器端的一些javascript可能会添加x,您需要在浏览器端修复该问题

要验证这一点,请使用浏览器检查工具+网络选项卡查看浏览器和服务器发送的实际请求+响应标头

如果服务器发送302重定向之类的消息,其响应位置标头将包含它希望浏览器使用的URI。如果该URI不包含x,那么您就知道浏览器本身正在添加x


虽然服务器可以在其位置响应头中发送x,但浏览器永远不会将其发送回服务器。

可能是浏览器端的某些javascript实际添加了x,您需要在浏览器端修复该问题

要验证这一点,请使用浏览器检查工具+网络选项卡查看浏览器和服务器发送的实际请求+响应标头

如果服务器发送302重定向之类的消息,其响应位置标头将包含它希望浏览器使用的URI。如果该URI不包含x,那么您就知道浏览器本身正在添加x


虽然服务器可以在其位置响应标题中发送x,但浏览器永远不会将其发送回服务器。

下面的几个问题回答了这个问题-。最后我做了一个客户端重定向来避免这个问题。

下面的几个问题回答了这个问题-。我最后做了一个客户端重定向来避免这个问题。

哈希永远不会发送到服务器。所以如果你请求一个url,比如 example.org/my-account-overviewprofile 服务器仅获取url作为请求的资源 example.org/my-account-overview


如果改为发送重定向,浏览器应请求新url,并在哈希本身之后自动添加哈希和值。

哈希永远不会发送到服务器。所以如果你请求一个url,比如 example.org/my-account-overviewprofile 服务器仅获取url作为请求的资源 example.org/my-account-overview

如果改为发送重定向,浏览器应请求新url,并在哈希本身之后自动添加哈希和值。

如果在302重定向中发送不同的书签,则浏览器可能会使用该url。请参阅链接问题中的第二个答案。如果您在302重定向中发送了不同的书签,则浏览器可能会使用该书签。请参见链接问题中的第二个答案。