2014-03-28 41 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小時的谷歌搜索...... –

+0

沒有可靠的跨環境方式來檢查在PHP中收到的標題。如果是apache,請嘗試'apache_request_headers();' – 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作爲apache模塊運行 – Anthony