Google 负载均衡器映射 url 包含“#”

Google Load Balancer map url containing has '#'

我有一个使用 GCP 负载平衡器和 GCP 存储作为后端服务配置的网站。

现在是什么:

https://example.com/#/  --> works
https://example.com/#/path --> works

我想要的:

https://example.com/#/ 但在后端它应该命中 /#/path。

我尝试使用 host and path rules 进行 GCP 路径映射,但符号 # 导致了问题。它在浏览器中将 # 转换为 %23 并显示 key not found

有什么想法吗?

在 URL/URI 中,哈希符号 (#) 具有特殊含义,它是用作通用分隔符 1 的保留字符,用作正斜杠 (/) 或 ( @) 做。 实际上哈希符号被解释为 URL 中的锚点,因此它应该指向文档中的锚点部分。一个例子是:

http://example.com/your_page.html#my_document

它将 link URL 直接指向 your_page.html 中的 my_document 锚点。

因此,如果您使用与此不同的散列字符,出于安全原因,URL 地图将被编码。如 RFC1738 2 中所述:字符“#”是不安全的,应始终进行编码,因为它在万维网和其他系统中用于分隔 URL 和 fragment/anchor可能跟在它后面的标识符。

因此,您的 URL 字符串正在由浏览器机制编码。 更多信息在这里 3.

尽管可以使用哈希符号设置 URL 映射,但不建议这样做。因此,我恳请您不要在 URL 映射中使用哈希符号。

它如您所说的那样工作的原因仅仅是因为哈希符号“#”在未被编码时已被您的 Web 应用程序忽略。 所以它可以像 /#/path/#/#/#/path 一样工作。但实际上它只是在解释 /path.