【问题标题】:HTTP request over IPv6基于 IPv6 的 HTTP 请求
【发布时间】:2011-11-07 11:56:15
【问题描述】:

我想知道从 IPv4 服务器到 IPv6 服务器使用的 HTTP GET 请求的头部格式之间的区别?

现在,我目前使用的是以下格式:

"GET /"+myFileToDownLoad+" HTTP/1.1\r\n"+
            "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*\r\n"
            +"Referer: http://"+myDstIp+"/\r\n"
            +"Accept-Language: he\r\n"
            +"Accept-Encoding: gzip, deflate\r\n"
            +"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n"
            //+"Host: "+myDstIp+"\r\n"
            +"Host: "+((myHost==null)?myDstIp:myHost)+"\r\n"
            +"Connection: Close\r\n\r\n";

那么,如果我想使用 IPv6 服务器,是否需要更改格式?

【问题讨论】:

    标签: http header ipv6


    【解决方案1】:

    RFC 2732 更新了主机字段:

    对 RFC 2396 中的语法进行了以下更改:(1) 更改“主机”非终端以添加 IPv6 选项:

      host          = hostname | IPv4address | IPv6reference
      ipv6reference = "[" IPv6address "]"
    

    其中 IPv6 地址在 RFC2373 [ARCH] 中定义。

    因此,您应该将 IPv6 地址括在方括号中。

    更新: 该更改适用于具有 IPv6 格式主机部分的 URL,并传播到使用原始地址中的“主机”部分的所有请求字段 - 在您的示例中,这些字段是主机和引用者。 也就是说,您必须在 ReferrerHost 字段中的 myDstIp 周围添加方括号。

    【讨论】:

    • @ramuluponnam:对于您的代码,它可能看起来像:if (isIPv6(myDstIp)) myDstIp = '['+myDstIp+']'
    • 嗨 Lyth,这可能在 url 规范中。我在 http 请求标头中询问。在它可以反映的标头中。
    • 感谢您的回复。我可以知道它反映在请求标头中的位置吗?我认为这是 thr url 部分。我通过提供 htp://[ipv6adress]:port 打开网址,它工作正常。但我正在从 linux 机器向该服务器发出 http 请求。我想知道该请求格式的区别。你能更新一下吗?我需要这些信息。
    • @ramuluponnam "Referrer" 和 "Host" 字段都受到更改的影响,因为它们基于请求的 URL。
    • 抱歉,您最好再参考另一个RFC 2428,这个讨论已经超出了问题的范围。
    【解决方案2】:

    RFC2396 统一资源标识符 (URI):通用语法 已由 RFC2732 URL 中的文字 IPv6 地址格式 更新。

    具体来说,RFC2732 中的第 3 节。

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 2022-01-21
      • 2011-08-26
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      相关资源
      最近更新 更多