源和x-forwarded-host http标头之间的区别

时间:2019-11-18 15:45:04

标签: http header

在工作中,我们使用具有多个虚拟主机的多个网站。

我了解Virtual Host是什么,但是我不了解OriginX-forwarded-Host标头之间的区别。 (我们在工作中同时使用了这两个标头。)

来自MDN的示例

  • X-forwarded-Host = X-Forwarded-Host:==> X-Forwarded-Host: id42.example-cdn.com
  • 来源==来源:“://” [“:”] ==> Origin: https://developer.mozilla.org

根据以上示例得出的结论是:X-forwarded-Host仅包含主机,而Origin包含主机以及方法以及端口。

有人可以告诉我我是否错了?

1 个答案:

答案 0 :(得分:2)

向网站提出请求时,用户代理(浏览器)将在请求中添加一个Host标头。该标头的值将是发出请求的域名。服务器可以使用此标头来区分您要访问的网站,例如当同一台服务器托管多个网站时。

如果使用反向代理,则Host标头将包含反向代理本身的值。为了知道原始主机,可以使用X-forwarded-Host。此标头包含代理最初收到的Host内容。

示例:如果您向https://stackoverflow.com发出GET请求,则Host(或在代理X-forwarded-Host之后)标头将始终具有值stackoverflow.com

Origin标头与此无关。该标头告诉您从哪个站点发出请求。
例如,如果您在<form>上有一个example.comstackoverflow.com发出POST请求,则Host将是stackoverflow.com(发送请求的域到),而Origin的值为https://example.com


要进行演示,您可以访问以下链接:https://jsfiddle.net/parcqhn4/

如果您在开发人员工具中打开“网络”标签,然后点击“提交”按钮,则可以看到Host标头包含值example.com(位于{{1 action中的}},而<form>包含值Origin(小提琴在其中运行的容器)。