Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform Google负载平衡器映射url包含'#';_Google Cloud Platform_Google Cloud Storage_Google Cloud Load Balancer - Fatal编程技术网

Google cloud platform Google负载平衡器映射url包含'#';

Google cloud platform Google负载平衡器映射url包含'#';,google-cloud-platform,google-cloud-storage,google-cloud-load-balancer,Google Cloud Platform,Google Cloud Storage,Google Cloud Load Balancer,我有一个网站配置使用GCP负载平衡器和GCP存储作为后端服务 现在的情况是: https://example.com/#/ --> works https://example.com/#/path --> works 我想要的是: 但在后端,它应该命中/#/path 我尝试过使用主机和路径规则进行GCP路径映射,但symbol#导致了问题。它在浏览器中将#转换为%23,并显示未找到键 有什么想法吗?在URL/URI中,符号散列(#)有一个特殊的含义,它是一个保留字符,用作一般分隔

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

现在的情况是:

https://example.com/#/  --> works
https://example.com/#/path --> works
我想要的是:

但在后端,它应该命中/#/path

我尝试过使用
主机和路径规则进行GCP路径映射,但symbol
#
导致了问题。它在浏览器中将
#
转换为
%23
,并显示
未找到键


有什么想法吗?

在URL/URI中,符号散列(#)有一个特殊的含义,它是一个保留字符,用作一般分隔符,就像正斜杠(/)或at(@)一样。 实际上,散列符号被解释为URL中的锚点,因此它应该指向文档中的锚点部分。例如:

http://example.com/your_page.html#my_document
它将直接在
your_page.html
中的
my_文档
锚点链接URL

因此,如果您使用的哈希字符与此不同,出于安全原因,URL映射将被编码。正如RFC1738中所述:字符“#”是不安全的,应始终进行编码,因为它在万维网和其他系统中用于根据可能跟随它的片段/锚标识符来界定URL

因此,浏览器机制正在对URL字符串进行编码。 这里有更多信息

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

正如您所提到的,它工作的原因很简单,因为哈希符号“#”在未编码时被web应用程序忽略。
因此它可以像
/#/path
/#/#/path
那样工作。但实际上,它只是解释URL/URI中的
/path

,符号散列(#)有一个特殊的含义,它是一个用作通用分隔符的保留字符,就像正斜杠(/)或at(@)一样。 实际上,散列符号被解释为URL中的锚点,因此它应该指向文档中的锚点部分。例如:

http://example.com/your_page.html#my_document
它将直接在
your_page.html
中的
my_文档
锚点链接URL

因此,如果您使用的哈希字符与此不同,出于安全原因,URL映射将被编码。正如RFC1738中所述:字符“#”是不安全的,应始终进行编码,因为它在万维网和其他系统中用于根据可能跟随它的片段/锚标识符来界定URL

因此,浏览器机制正在对URL字符串进行编码。 这里有更多信息

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

正如您所提到的,它工作的原因很简单,因为哈希符号“#”在未编码时被web应用程序忽略。 因此它可以像
/#/path
/#/#/path
那样工作。但事实上,它只是在解释路径