2013-06-13 2 views
0

내가 다음에 수행 컬 나머지 웹 서비스를 호출하기 위해 노력하고있어 변경되지 않는다 그 기능들 중 하나는 혼자 일하고 있지만, 하나의 서비스에서 그들을 모을 때 다운로드 대화창은 열리지 않으며, 나는 항상 Content type으로 text/html을 얻습니다. 방화범을 통해 그것을 보았습니다.헤더의 "콘텐츠 유형은"

이 (php.ent에서) 다운로드의 코드입니다 :

if (file_exists($filename)) { 
      header("Content-Length: " . filesize($filename)); 
      header('Content-Type: application/octet-stream'); 
      header('Content-Disposition: attachment; filename=' . $certName); 

      readfile($filename, false); 
      exit(); 
     } 

여기 내 서비스를 호출하는거야 방법은 다음과 같습니다

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POST, 1); 
$dat=array( 
// many args 
      ); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $dat); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$data = curl_exec($ch); 
$curl_errno = curl_errno($ch); 
$curl_error = curl_error($ch); 
    if ($curl_errno > 0) { 
     echo "cURL Error ($curl_errno): $curl_error\n"; 
    } else { 
     echo "Data received: $data\n"; 
    } 
    curl_close($ch); 

잘못들 무엇입니까?

답변

1
  1. 브라우저가
  2. 서버가 컬을 실행하는 PHP 스크립트를 실행하는 HTTP 요청을
  3. 컬을 다른 서버에서 데이터를 가져 그렇지 않은 브라우저
  4. 컬을하고 있기 때문에 내용 - 처리 헤더를 무시
  5. 는 PHP 스크립트는 HTML 문서
  6. 브라우저의 본문으로 컬을 출력 Data received: $data을 실행하면 해당 HTTP 문서를 수신

프로그램에서 cURL을 사용하여 프록시로 작동하게하려면 HTTP 헤더를 프록시하고 출력에 추가 데이터를 추가하지 않아야합니다.

관련 문제