返回

转发请求时,那些值得关注的Hop-by-hop Headers和End-to-end Headers

前端

在HTTP请求转发过程中,Hop-by-hop Headers和End-to-end Headers扮演着重要的角色。Hop-by-hop Headers是那些只能在单次请求中使用的头信息,它们不会被代理服务器转发。例如,"Connection"和"Proxy-Authenticate"头信息就是Hop-by-hop Headers。而End-to-end Headers是可以跨越代理服务器被转发的头信息,例如,"Content-Type"和"User-Agent"头信息就是End-to-end Headers。

了解Hop-by-hop Headers和End-to-end Headers的特性和区别,有助于开发者更深入地掌握HTTP协议的细节,从而优化Web应用程序的性能和安全性。

Hop-by-hop Headers

Hop-by-hop Headers只在单次请求中使用,不会被代理服务器转发。这是因为这些头信息通常包含一些与当前请求相关的临时信息,例如,"Connection"头信息包含的信息是关于当前请求的连接状态,"Proxy-Authenticate"头信息包含的信息是关于代理服务器对客户端的认证要求。这些信息只对当前请求的处理有意义,不需要被转发给其他服务器。

End-to-end Headers

End-to-end Headers可以跨越代理服务器被转发。这是因为这些头信息包含的信息对整个请求过程都是有意义的,例如,"Content-Type"头信息包含的信息是关于请求体的类型,"User-Agent"头信息包含的信息是关于客户端的类型。这些信息对于请求的处理和响应的生成都是必要的,需要被转发给其他服务器。

Hop-by-hop Headers和End-to-end Headers的列表

下表列出了Hop-by-hop Headers和End-to-end Headers的列表:

Hop-by-hop Headers End-to-end Headers
Connection Content-Type
Keep-Alive Content-Encoding
Proxy-Authenticate Content-Language
Proxy-Authorization Content-Length
TE Content-Location
Trailer Content-MD5
Transfer-Encoding Content-Range
Upgrade Date
Via ETag
Expires
Last-Modified
Pragma
Server
Set-Cookie
Trailer
Transfer-Encoding
User-Agent
Vary
WWW-Authenticate

注意:

  • 有些头信息既可以是Hop-by-hop Headers,也可以是End-to-end Headers,具体取决于头信息的值。例如,"Cache-Control"头信息既可以是Hop-by-hop Headers,也可以是End-to-end Headers。
  • 不是所有的web容器都能帮助开发者屏蔽hop-by-hop headers,有些容器反而允许开发者自定义hop-by-hop headers来实现更大程度的灵活性。

总结

Hop-by-hop Headers和End-to-end Headers是HTTP协议中两种重要的头信息类型。了解这两种头信息类型的特性和区别,有助于开发者更深入地掌握HTTP协议的细节,从而优化Web应用程序的性能和安全性。