检测使用cURL发出的请求中的内容类型

时间:2014-03-28 09:54:35

标签: php http curl httprequest content-type

我正在尝试使用以下代码将cURL请求发送到远程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;

感谢任何提前帮助的人。

1 个答案:

答案 0 :(得分: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;
}