> 백엔드 개발 > PHP 튜토리얼 > 关于用file()读取url的疑问

关于用file()读取url的疑问

WBOY
풀어 주다: 2016-06-06 20:39:56
원래의
1263명이 탐색했습니다.

<code> $buffer = file("http://www.sina.com.cn");
  for($i=0;$i<sizeof echo></sizeof></code>
로그인 후 복사
로그인 후 복사

读取新浪没问题,
但是读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
读搜狐就全是乱码
这是怎么回事?

回复内容:

<code> $buffer = file("http://www.sina.com.cn");
  for($i=0;$i<sizeof echo></sizeof></code>
로그인 후 복사
로그인 후 복사

读取新浪没问题,
但是读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请求是这样的

<code>GET / HTTP/1.0
HOST: www.douban.com
</code>
로그인 후 복사

而浏览器发出的是这样的

<code>GET / HTTP/1.1
Host: www.douban.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: xxxxxxxxxxxxxxxxxx
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
</code>
로그인 후 복사

这样题主能否理解呢(主要关注第一行的差异即可)?

如果还是不理解,请继续看

但是读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压缩的

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿