#标签后面的URL被剪切

问题描述 投票:1回答:2

我正在使用Java(Maven),Angular(8.3.20)和Tomcat服务器

在Java中,我有一个HttpServletResponse的sendRedirect,其URL包含井号。

例如:https://localhost:4200/api/hello#world

但是#(世界部分)之后的字符串不会出现在前端。

在控制台/网络中,作为标题,我收到了https://localhost:4200/api/hello。所以#world消失了。

我已尝试将主题标签更改为编码值(它将返回%23),但效果不佳。

将主题标签发送到前端后,如何获得零件?因此,从后端(带有井号/井号的网址)到前端。

java angular tomcat redirect hashtag
2个回答
0
投票

我寻找了这个问题,找到的解决方法是将#编码为%23,但是它似乎不适用于所有浏览器(例如IE,Safari),因此请尝试使用google-chrome。

更多信息:https://support.google.com/richmedia/answer/190941?hl=en


0
投票

路由策略

HashLocationStrategy的角度exploits#符号后的任何内容都不会发送到服务器的事实-使其成为存储应用程序状态的理想选择。

为什么有用

通过散列路由,可以在子页面上重新加载页面(或通过书签重新访问页面)>

http://localhost:4200/#/articles/35

不会在服务器上查询子页面,而是返回主应用程序页面。

http://localhost:4200/

这样,服务器实现只需要知道根页面(这是唯一要查询的内容)

使用PathLocationStrategy(默认),需要将服务器设置为处理应用程序实现的每个URL的请求。

所以您能做的是:从路线文件中禁用HashLocationStrategy的角度。或者,您可以不带#附加网址,然后将其发送到服务器并在服务器端处理该网址。

我有同样的问题,我所做的是添加#前面的部分作为查询参数,以便服务器可以访问它。例如。(Https://localhost:4200/api/test?remainingDataFromHash=requiredData)像这样

© www.soinside.com 2019 - 2024. All rights reserved.