在工作中,我们使用具有多个虚拟主机的多个网站。
我了解Virtual Host是什么,但是我不了解Origin
和X-forwarded-Host
标头之间的区别。 (我们在工作中同时使用了这两个标头。)
来自MDN的示例
X-Forwarded-Host: id42.example-cdn.com
Origin: https://developer.mozilla.org
根据以上示例得出的结论是:X-forwarded-Host
仅包含主机,而Origin
包含主机以及方法以及端口。
有人可以告诉我我是否错了?
答案 0 :(得分:2)
向网站提出请求时,用户代理(浏览器)将在请求中添加一个Host
标头。该标头的值将是发出请求的域名。服务器可以使用此标头来区分您要访问的网站,例如当同一台服务器托管多个网站时。
如果使用反向代理,则Host
标头将包含反向代理本身的值。为了知道原始主机,可以使用X-forwarded-Host
。此标头包含代理最初收到的Host
内容。
示例:如果您向https://stackoverflow.com
发出GET请求,则Host
(或在代理X-forwarded-Host
之后)标头将始终具有值stackoverflow.com
。
Origin
标头与此无关。该标头告诉您从哪个站点发出请求。
例如,如果您在<form>
上有一个example.com
向stackoverflow.com
发出POST请求,则Host
将是stackoverflow.com
(发送请求的域到),而Origin
的值为https://example.com
。
要进行演示,您可以访问以下链接:https://jsfiddle.net/parcqhn4/
如果您在开发人员工具中打开“网络”标签,然后点击“提交”按钮,则可以看到Host
标头包含值example.com
(位于{{1 action
中的}},而<form>
包含值Origin
(小提琴在其中运行的容器)。