2011-08-29 4 views
1

나는 다음과 같은 코드가 있습니다표시 컬 리디렉션하지만 따르지 않는

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, "http://www.site.com/check.php?id=1"); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)"); 
$curlData = curl_exec($curl); 
curl_close($curl); 
echo $curlData; 

원격 사이트의 스크립트가 특정 검사를 수행하며, 검사에 따른 그것은 작은의 15x15의 GIF 이미지로 리디렉션 결과를 .

지금은 CURLOPT_FOLLOWLOCATION, 1입니다. 즉, $curlData을 되 돌리면 내가 원하는 바가 아닌 이미지의 바이너리 코드가 나타납니다.

스크립트가 실제로 리디렉션을 따르지 않고 나를 리디렉션하려고 할 때 컬 표시가 가능합니까? 그래서 내가 gif 이미지를 가리키는 대신 gif 내용을 출력하는 대신에 리다이렉트 할 수 있습니까?

감사합니다.

+0

http://stackoverflow.com/questions/5091208/php-curl-get-target-of-redirect-without-following-it –

답변

2

쉽게! CURLOPT_FOLLOWLOCATION을 설정하지 말고 응답에서 Location 헤더를 읽으십시오.

편집 : 좀 더 자세하게 설명합니다. 머리글은 상태 줄 바로 뒤의 응답 줄이며 \r\n으로 구분됩니다. 이 줄을 분리하고 접두사가 Location: 인 줄을 찾아야합니다. 이것은 문자열 파싱 (string parsing) 운동입니다. 흥미롭지도 까다 롭지도 않습니다. CURLINFO_HEADER_SIZE 플래그와 함께 curl_getinfo을 사용하여 응답의 헤더 부분의 전체 길이를 검색 할 수 있습니다.

+0

어떻게 '위치'를 읽을 수 있습니까? – user838437

+0

감사! 작동 해. – user838437

관련 문제