繁体   English   中英

URL 在主题标签后被删除

[英]URL gets cut after the hashtag

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

在 Java 中,我有一个用于 HttpServletResponse 的 sendRedirect,其 URL 包含一个标签。

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

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

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

我试图将主题标签更改为编码值(它将返回 %23),但这也不起作用。

将主题标签发送到前端后,如何获取该部分? 所以从后端(带有英镑/井号标签的 url)到前端。

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

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

路由策略

angular 利用HashLocationStrategy漏洞利用的事实是#符号之后的任何内容都不会发送到服务器- 这使得它非常适合用于存储应用程序 state。

为什么有用

使用 hash 在子页面上路由页面重新加载(或通过书签重新访问),例如

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

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

http://localhost:4200/

这样服务器实现只需要知道根页面(这是唯一会被查询的东西)

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

所以你能做的是:从路由文件中禁用HashLocationStrategy中的 HashLocationStrategy 。 或者您可以不带# append url 然后将其发送到服务器并在服务器端处理 url。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM