• WL
    2019-05-21
    请问一下老师Host头部部分的PPT中有一句话是为防止陈旧的代理服务器, 这个防止是防止陈旧服务器什么呢? 目的是让陈旧的代理服务器正确处理请求吗? 为什么绝对路径就会正确处理, 相对路径就不会呢? 是因为域名的相对路径在DNS服务器中匹配不到IP地址吗?

    作者回复: 只识别http/1.0的代理服务器,是不认识Host头部的,但它会识别绝对URI包括里面的域名。
    WL你学习过《Nginx核心知识100讲》,你可以试验下用telnet构造请求,Nginx如果找到绝对URI中的域名,就不会使用Host中的域名。所以URI中域名优先级更高。

    
     2
  • 三年过后
    2020-01-16
    -bash-4.2# telnet www.taohui.pub 80
    Trying 116.62.160.193...
    Connected to www.taohui.pub.
    Escape character is '^]'.
    GET /wp-content/plugins/Pure-Highlightjs_1.0/assets/pure-highlight.css?ver=0.1.0 HTTP/1.1
    Host:xxxxxxxxxx

    HTTP/1.1 200 OK
    Server: openresty/1.15.8.1
    Date: Wed, 15 Jan 2020 22:53:56 GMT
    Content-Type: text/css
    Content-Length: 108
    Last-Modified: Thu, 27 Dec 2018 07:35:33 GMT
    Connection: keep-alive
    ETag: "5c2480c5-6c"
    Expires: Wed, 22 Jan 2020 22:53:56 GMT
    Cache-Control: max-age=604800
    Accept-Ranges: bytes

    pre.pure-highlightjs {
        background-color: transparent;!important;
        border: none;
        padding: 0;
    }

    实验:URI中的域名比Host中的域名优先级高
    展开

    作者回复: 呃,这种不是URI中的域名,这是工具使用了域名,通过DNS解析出IP,再建立TCP连接。所谓URI中的域名,不是这种格式,你再看下12课,其中,request target中有四种格式,其中一种叫absolute-form,这才是URI中的域名。https://tools.ietf.org/html/rfc7230#page-42

    
    
  • chenjisi
    2019-12-31
    老师我用户chrome的network面板查看: 貌似静态资源请求都没有host请求头(例如png,gif 等)

    作者回复: 有的,你再仔细看看。通常在Request Headers那一部分,如果你用的是http2协议,那么名称会从Host改为Authority。除非它不是独立请求,而是嵌入到别的请求中的一些编码,那种是没有的。

     1
    
  • 一步
    2019-05-20
    这里如果 请求行中是绝对路径,包含域名,而且和请求头中的Host 不一致,那么哪个优先呢? 还是回直接返回 400 错误?

    这个不知道知道去搭建测试环境? 是需要抓包改请求的数据吗?

    作者回复: 不同的服务器实现不同。当前最广泛使用的Nginx发现冲突时,以请求行中的域名为准,忽略Host头部,不会返错。
    构造请求参看课程中介绍过后telnet或者curl工具,服务器搭建选择好后再参看相应教程。

    
    
我们在线,来聊聊吧