[英]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.