2011-05-15 3 views
3

file_get_contents를 사용하는 간단한 콘텐츠 사용자를 프로그래밍했지만 불행히도 내 IP의 경우 사이트가 이미지에 전달하는 302 오류를 제공합니다. 다른 모든 사용자의 경우 일반 사이트를 볼 수 있습니다.PHP에서 file_get_contents가있는 이동 된 헤더를 어떻게 무시합니까?

get_contents를 어떻게 다시 작성하여 웹 사이트의 콘텐츠를 다운로드하고 실제로 리디렉션을 따르지 않도록합니까?

$html = file_get_contents("http://www.site.net/"); 

답변

-1

거기에 콘텐츠가 없습니다. 리디렉션은 콘텐츠가 전송되기 전에 HTTP 응답에서 발생합니다.

서버는 사용자가 보거나 얻지 못하게 결정합니다.

$context = stream_context_create(
    array (
     'http' => array (
      'follow_location' => false // don't follow redirects 
     ) 
    ) 
); 
$html = file_get_contents('http://www.site.net/', false, $context); 

수동 : 참조 :

+0

리디렉션은 HTTP 응답 헤더에서 발생합니다. 그러나 잘못 구성된 서버는 응답 코드 302와 함께 새 위치를 보내더라도 출력을 보낼 수 있습니다. – AndersTornkvist

+1

**이 대답은 잘못된 것입니다. (의심의 여지를 피하기 위해). @Oliver가 말했듯이, 어떤 컨텐츠도 302로 보내지 않는다고 가정하는 것은 안전하지 않습니다. – John

20

당신은 컨텍스트 만들 필요가 말했다와

를, 그것은 어떤이 가능성이 매우 높습니다 페이지에 남아있는 콘텐츠. 302 헤더를 제공하고 HTTP 본문을 제공하는 것은 불가능하지 않지만 분명히 정통입니다.

+1

'follow_location'은 PHP 5.3.4에서만 사용 가능합니다 (모든 사람이 어쨌든 모든 것을 실행해야합니다). 또한 " max_redirects => 0 "이 필요합니다 (예 : http : //php.net/manual/en/context.http.php의 예제 2 참조) –

+1

+1. 이것은 정답입니다. – nalply

관련 문제