Node.js 如何从Firebase主机重写发送的请求中获取云运行服务器上的主机名?
我需要在我的web应用程序上进行SSR。由于它是一个国际网站,我需要知道请求该网站的域(主机名),以便我可以为用户提供适当的语言 例如:Node.js 如何从Firebase主机重写发送的请求中获取云运行服务器上的主机名?,node.js,firebase,firebase-hosting,google-cloud-run,Node.js,Firebase,Firebase Hosting,Google Cloud Run,我需要在我的web应用程序上进行SSR。由于它是一个国际网站,我需要知道请求该网站的域(主机名),以便我可以为用户提供适当的语言 例如: https://www.mydomain.co.uk // WILL RENDER IN ENGLISH https://www.mydomain.es // WILL RENDER IN SPANISH 这是设置 云运行docker Node.js容器上的express服务器 Firebase主机将重写对云运行容器的所有请求 以下是Firebas
https://www.mydomain.co.uk // WILL RENDER IN ENGLISH
https://www.mydomain.es // WILL RENDER IN SPANISH
这是设置
- 云运行docker Node.js容器上的express服务器
- Firebase主机将重写对云运行容器的所有请求
"rewrites": [
{
"source": "**",
"run": {
"serviceId": "my-server-id",
"region": "us-central1"
}
}
]
很好用。但我注意到,所有请求都通过以下主机名到达我的云运行服务器:
,这是我的服务器服务的默认云运行urlreq.hostname==”https://my-server-id-on-cloud-run.run.app“
x-forwarded-host:https://www.mydomain.co.uk“或”https://www.mydomain.es
web.app或firebaseapp.com
)或通过连接的自定义域访问我的网站,我可以相信x-forwarded-host
标题将始终存在,对吗?
是否会出现x-forwarded-host
包含多个URL的情况?就像在使用IPs的网络中一样
参考资料:
PS:我注意到,如果我直接从cloud run默认url
.run.app
点击我的cloud run服务器,那么x-forwarded-for
头就不存在了,这很有意义,因为它是一个直接请求,而不是重写的请求。根据这一点
头用于确定最初使用的主机X-Forwarded-Host
- 此标头用于调试、统计和生成与位置相关的内容
X-Forwarded-Host:
,指令是:
转发服务器的域名。
这意味着该标头中的moew值不能小于1
<host>
The domain name of the forwarded server.