我正在使用Java(Maven),Angular(8.3.20)和Tomcat服务器
在Java中,我有一个HttpServletResponse的sendRedirect,其URL包含井号。
例如:https://localhost:4200/api/hello#world。
但是#(世界部分)之后的字符串不会出现在前端。
在控制台/网络中,作为标题,我收到了https://localhost:4200/api/hello。所以#world消失了。
我已尝试将主题标签更改为编码值(它将返回%23),但效果不佳。
将主题标签发送到前端后,如何获得零件?因此,从后端(带有井号/井号的网址)到前端。
我寻找了这个问题,找到的解决方法是将#编码为%23,但是它似乎不适用于所有浏览器(例如IE,Safari),因此请尝试使用google-chrome。
更多信息:https://support.google.com/richmedia/answer/190941?hl=en
与HashLocationStrategy
的角度exploits是#
符号后的任何内容都不会发送到服务器的事实-使其成为存储应用程序状态的理想选择。
通过散列路由,可以在子页面上重新加载页面(或通过书签重新访问页面)>
http://localhost:4200/#/articles/35
不会在服务器上查询子页面,而是返回主应用程序页面。
http://localhost:4200/
这样,服务器实现只需要知道根页面(这是唯一要查询的内容)
使用PathLocationStrategy
(默认),需要将服务器设置为处理应用程序实现的每个URL的请求。
所以您能做的是:从路线文件中禁用HashLocationStrategy
的角度。或者,您可以不带#附加网址,然后将其发送到服务器并在服务器端处理该网址。
我有同样的问题,我所做的是添加#前面的部分作为查询参数,以便服务器可以访问它。例如。(Https://localhost:4200/api/test?remainingDataFromHash=requiredData
)像这样