host referer origin三者区别

271 阅读2分钟

1. Host字段

Host字段是HTTP请求头的一部分,它指明了请求的目标服务器的域名(或IP地址)和端口号Host字段的主要作用是在同一物理服务器上托管多个网站时,帮助服务器识别请求应该被路由到哪个特定的虚拟主机。例如,一台服务器上可能同时运行着example.comtestsite.org两个网站,客户端发送的请求中包含的Host字段将帮助服务器确定该请求是针对哪个网站的。

  • 特点

    • 只包含域名和端口号,不包含路径。
    • 有助于实现虚拟主机技术,允许多个网站共享同一台物理服务器。
  • 示例

    GET /index.html HTTP/1.1
    Host: example.com:8080
    

2. Referer字段

Referer字段也是HTTP请求头的一部分,它包含了请求的来源页面的URL。这个字段通常用于统计分析、日志记录以及缓存优化等。例如,当用户从example.com的一个页面点击链接跳转到anothersite.org时,anothersite.org可以通过Referer字段得知用户是从example.com的哪个页面跳转过来的。

  • 特点

    • 包含了完整的URL(协议、域名、路径、查询字符串),但不包含片段标识符(#后面的部分)。
    • 可用于防盗链,限制资源的访问来源。
    • 在某些情况下可能不会被发送,例如直接在浏览器地址栏输入URL、通过书签访问或从HTTPS页面跳转到HTTP页面时。
  • 示例

    GET /image.jpg HTTP/1.1
    Host: anothersite.org
    Referer: http://example.com/page.html
    

3. Origin字段

Origin字段主要用于跨域资源共享(CORS)请求中,它指明了请求的源,即发起请求的页面的协议、域名和端口号。与Referer不同,Origin不包含具体的路径信息,只包含站点信息。Origin字段帮助服务器判断请求是否来自被允许的源,从而决定是否允许跨域请求。

  • 特点

    • 通常出现在跨域请求中,如XMLHttpRequest或Fetch API发起的请求。
    • 只包含协议、域名和端口号,不包含路径信息。
    • 服务器可以通过检查Origin字段来实施跨域策略,例如通过设置Access-Control-Allow-Origin响应头来允许或拒绝跨域请求。
  • 示例

    OPTIONS /resource.json HTTP/1.1
    Host: anothersite.org
    Origin: http://example.com
    

总结

  • Host:指明请求的目标服务器,帮助服务器识别请求应路由到哪个虚拟主机。它包含域名和端口号,不包含路径信息。
  • Referer:记录请求的来源页面的完整URL,常用于统计分析、日志记录和防盗链。它可能因安全或隐私原因不被发送。
  • Origin:主要用于跨域请求,指明请求的源,帮助服务器判断是否允许跨域访问。它只包含协议、域名和端口号,不包含路径信息。