通过IPv6的HTTP请求

ram*_*nam 2 header http ipv6

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

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

"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";
Run Code Online (Sandbox Code Playgroud)

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

Lyt*_*yth 7

RFC 2732更新主机字段:

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

  host          = hostname | IPv4address | IPv6reference
  ipv6reference = "[" IPv6address "]"
Run Code Online (Sandbox Code Playgroud)

其中IPv6address的定义与RFC2373 [ARCH]中的相同.

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

更新: 此更改适用于具有IPv6格式的主机部分的URL,并传播到使用原始地址中的"主机"部分的所有请求字段 - 在您的示例中,这些是Host和Referrer.也就是说,你必须在myDstIpin ReferrerHostfields中添加方括号.