2011-09-19 292 views
2

我想知道使用從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服務器,是有必要更改格式?

回答

7

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

1

RFC2396統一資源標識符(URI):通用語法RFC2732格式文本IPv6在URL的地址更新。

具體來說,RFC2732中的第3節。