通过IPv6的HTTP请求

问题描述:

我想知道使用从IPv4服务器到IPv6服务器的HTTP GET请求的标头格式之间的区别吗?通过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"; 

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

RFC 2732更新主机字段:

在RFC 2396的以下更改的语法是由:(1) 改变 '主机' 非末端添加一个IPv6选项:

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

其中IPv6address的定义与RFC2373 [ARCH]一致。

所以你应该把IPv6地址放在方括号中。

更新: 的变化适用于在IPv6格式的主机部分网址,并传播到使用“主机”部分从原来的地址的所有请求字段 - 在你的榜样这些主机和推荐。 也就是说,您必须在和Host字段中的myDstIp附近添加方括号。

+0

嗨Lyth,谢谢你的回应。 –

+0

我可以知道这反映在标题格式.... –

+0

@ramuluponnam:对于您的代码,它可能看起来像: 'if(isIPv6(myDstIp))myDstIp ='['+ myDstIp +']'' – Lyth

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

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