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
.
我有一个使用 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
.