trust proxy
与301重定向无关。
运行节点服务器时,该设置很重要
+----------HTTPS--------+---HTTP---+
| | |
client --> internet --> proxy --> node.js
典型的情况是,在internet和节点服务器之间有某种代理;例如,CDN服务器、负载平衡器或只是nginx实例之类的。在客户端和该代理之间建立HTTPS连接。代理关心SSL证书和加密连接的必要争论,并且不会为这些细节给应用服务器(节点)带来负担。然后,它仅通过普通HTTP将请求的相关细节转发到您的节点服务器。您的服务器仅将代理视为请求的来源,而不是客户端。
既然节点服务器本身不处理HTTPS连接,它怎么知道客户端和代理之间的连接是否是HTTPS?它不能。代理也需要自愿转发这些信息。它在
X-Forwarded-*
HTTP标头。具体是HTTP还是HTTPS的信息在
X-Forwarded-Proto
标题。
问题是,这些只是HTTP头。任何人都可以设置这些标题。客户端本身可以设置这些标头。这就是为什么您需要显式选择将这些头文件与
背景
iif和时间
你知道你的应用程序将运行在设置这些标题的代理之后。当您没有在代理后运行,但您的节点服务器直接暴露于互联网时,您必须关闭该设置;否则,任何人都可以设置这些头,您的服务器将遵守这些头,并导致使用虚假信息。