2014-03-28 8 views
0

이 코드 원격 API 서버로 컬 요청을 전송하려고로 만든 요청 내용 유형을 감지 :

$ch = curl_init(); 
$options = array(CURLOPT_URL => 'http://minecms.info/update/index.php', 
        CURLOPT_POST => true, 
        CURLOPT_RETURNTRANSFER => 1, 
        CURLOPT_POSTFIELDS => $data, 
        CURLOPT_HTTPHEADER => array('Content-type: application/json'), 
        CURLOPT_SSL_VERIFYPEER => false 
       ); 
curl_setopt_array($ch, $options); 
$response = curl_exec($ch); 

하지만 사용자가 너무 브라우저에서 업데이트 페이지에 접속하지 않으 요청에 콘텐츠 형식 헤더를 설정했습니다. 문제는 원격 서버에서이 콘텐츠 형식을 검색하는 방법을 모르겠다는 것입니다. 기본적으로 내가 원하는 것은 클라이언트 요청이 content type: application/json 집합인지 여부를 확인하는 것입니다. 그렇다면 나머지 코드를 실행합니다. 그렇지 않은 경우 exit;입니다.

미리 도움을 주셔서 감사합니다.

+0

(내가 현재 사용하고 어떤) : http://stackoverflow.com/questions/5519802/get-content-type-header-of-request-in-php – ilpaijin

+0

@ ilpaijin 아니오, 이미 그 질문을 읽었습니다. 정말 도움이되지 않았습니다. 3 시간 동안 Google 검색을했는데 ... –

+0

PHP에서 수신 된 헤더를 확인할 수있는 신뢰할 수있는 교차 환경 방식이 없습니다. – Anthony

답변

0

getallheaders()을 사용해보고 Content-Type이 있는지 확인하십시오.

이 일에 대한 통찰력

---- 편집 통찰력 사람 http://www.php.net/manual/it/function.getallheaders.php 봐 ----

그리고 무엇을 줘? 이 당신을 도울 수

public function getAllHeaders() 
{ 
    if(function_exists('getallheaders')) 
    { 
     return getallheaders(); 
    } 

    $headers = array(); 

    foreach ($this->parameters as $key => $value) 
    { 
     if (substr($key, 0, 5) == 'HTTP_') 
     { 
      $headers[str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($key, 5)))))] = $value; 
     } 

     if ($key == "CONTENT_TYPE") 
     { 
      $headers["Content-Type"] = $value; 
     } 
    } 

    return $headers; 
} 
+0

이것은 아파치 모듈로 실행되는 PHP에서만 작동합니다. – Anthony