Phil Sturgeon의 REST 컨트롤러를 사용하여 API를 작성하고 있습니다. API 인증은 API 키를 사용하여 수행됩니다. 현재이 데이터베이스에 api_keys 테이블에 정의 된 하나 개의 열쇠는 내가 설정 한 내 클라이언트를 다음 컬 요청을 통해이 키를 사용하여 API에 액세스 할 수 :Codeigniter REST API 헤더 및 인증
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_MAXREDIRS, 1);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 45);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/html; charset=utf-8',
'Accept: application/html',
'X_API_PREFIX: ' . $this->apiPrefix(),
'X_API_KEY: ' . $this->apiKey(),
"User-Agent: ShowHouse/" . ShowhouseClient::API_CLIENT_VERSION . '; PHP ' . phpversion() . ' [' . php_uname('s') . ']';
'Accept-Language: ' . $this->_acceptLanguage
));
curl_setopt($ch, CURLOPT_USERPWD, $this->apiKey());
if ('POST' == $method)
{
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
else if ('PUT' == $method)
{
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
else if('GET' != $method)
{
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
}
$response = curl_exec($ch);
그러나 내가 잘못된 API 키를 점점 계속 응답을 API 서버에서 다시받습니다. 문제는이 REST_Controller.php에 다음 줄에 나타납니다 :
if (($key = isset($this->_args[$api_key_variable]) ? $this->_args[$api_key_variable] : $this->input->server($key_name)))
모두
$this->_args[$api_key_variable]
및
$this->input->server($key_name)
실제로 설정되어 있지 않습니다. 우리 사무실의 3 명은 소스 관리 저장소에서 체크 아웃 한 것과 정확히 똑같은 코드를 가지고 있습니다. 우리 중 2 명은 Apache 2.4.4를 실행하고 다른 하나는 Apache 2.2.24를 실행하고 있습니다. 2.4.4를 실행하는 우리 둘 다 잘못된 API 키 오류가 계속 발생하지만 2.2.24를 실행하는 사람에게는 문제가 없지만 아파치 문제라고 제안 할 수는 있지만 모든 문제를 해결할 수는 없습니다.
누구에게도 이런 식으로 일어나는 이유는 무엇입니까?
미리 감사드립니다.