$buffer = file("http://www.sina.com.cn"); for($i=0;$i
讀取新浪沒問題,
但是讀163的話,就提示:
因為您的ISP供應商並沒有遵循標準的互連網協議,我們對您的訪問作出限制,敬請諒解。 您可以通過以下連結繼續訪問 www.163.com
而讀取豆瓣,就報warning:
Warning: file(http://www.douban.com) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in C:\wamp\www\1\1.php on line 25
讀搜狐就全是亂碼
這是怎麼回事?
回複內容:
$buffer = file("http://www.sina.com.cn"); for($i=0;$i
讀取新浪沒問題,
但是讀163的話,就提示:
因為您的ISP供應商並沒有遵循標準的互連網協議,我們對您的訪問作出限制,敬請諒解。 您可以通過以下連結繼續訪問 www.163.com
而讀取豆瓣,就報warning:
Warning: file(http://www.douban.com) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in C:\wamp\www\1\1.php on line 25
讀搜狐就全是亂碼
這是怎麼回事?
使用PHPfile函數發出的 HTTP請求是這樣的
GET / HTTP/1.0HOST: www.douban.com
而瀏覽器發出的是這樣的
GET / HTTP/1.1Host: www.douban.comConnection: keep-aliveAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8User-Agent: xxxxxxxxxxxxxxxxxxAccept-Encoding: gzip, deflate, sdchAccept-Language: zh-CN,zh;q=0.8,en;q=0.6
這樣題主能否理解呢(主要關注第一行的差異即可)?
如果還是不理解,請繼續看
但是讀163的話,就提示: 因為您的ISP供應商並沒有遵循標準的互連網協議,我們對您的訪問作出限制,敬請諒解。 您可以通過以下連結繼續訪問
www.163.com
163不支援 HTTP/1.0協議,但它的伺服器配置了接受HTTP/1.0的請求,當你使用HTTP 1.0協議訪問,會被302跳轉到http://www.163.com/special/0077jt/error_isp.html,也就是顯示上述文本的錯誤頁面
而讀取豆瓣,就報warning: Warning: file(http://www.douban.com) [function.file]:
failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in
C:\wamp\www\1\1.php on line 25
同樣,豆瓣不支援HTTP/1.0,對待HTTP/1.0請求更暴力,直接拒絕(403),因為它的伺服器沒有配置啟用HTTP1.0
讀搜狐就全是亂碼
因為sohu的首頁,是預設gzip壓縮的