2013-08-24 3 views
4

나는 내 서버에서 apache_request_headers()을 작동시키는 여행을 다녀 왔습니다. PHP 5.4의 최신 안정 버전으로 업그레이드하고 PHP 처리기를 FastCGI로 변경하여 apache_request_headers() 함수를 실행할 수 있습니다. 권한 문제로 인해 아파치 모듈로 PHP를 실행하지 않을 것입니다.인증 헤더 및 apache_request_headers 함수

모든 것이 새로운 설정에서 올바르게 작동하지만 apache_request_headers()가 OAuth 2 서버에 필요한 "인증"헤더를 선택하지 않은 것입니다.

내가 보내고 헤더는 다음과 같습니다

Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

그러나, 나는 다음 헤더 (또는 '승인'이외)를 보내는 경우, 그것은 작동 : 좌절

X-Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

을 ... 이 아이디어를 얻는 방법에 대한 아이디어가 있습니까?

+0

사용중인 OS는 무엇입니까? 나는 우분투 12.04와 PHP 5.5.5-1 + debphp.org ~ 정확한 + 2 (cli)를 사용하고 있습니다.하지만 "apache_request_headers"의 존재를 테스트 할 때 bool (false)이 반환됩니다. – Sergio

+0

내 대답보기 :) 그것을 밖으로 일했습니다. –

+0

mod_fastcgi w/php-fpm을 사용했기 때문에 생각합니다. 그 설정을 사용할 때 그 기능이 존재하지 않는다는 것은 꽤 잘 알려진 것 같습니다. 나는 또한 Access-Control-Allow-Origin과 다른 헤더를 사용할 필요가 있지만 그런 행운은 없다. 저는 "승인"이 필요하지 않습니다. 제 경우에는 두려워요. – Sergio

답변

11

더 많은 파기 후에 나는 다음을 발견했다. FastCGI PHP 처리기를 사용하지 않거나 PHP를 Apache 모듈로 실행하지 않는 경우 apache_request_headers()가 필요하지 않습니다. 별도의 노트에

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
</IfModule> 

는 내가 필요로 한 또 다른 헤더 내가() 함수는 apache_request_headers에서 얻을에만 수 있었던 콘텐츠 형식이었다. 누군가를 위해 도움이 될 수 : 빠른 CGI와 FPM과 PHP를 사용하는 경우

또한
RewriteRule .* - [E=HTTP_CONTENT_TYPE:%{HTTP:Content-Type}] 
0

, 다음과 같은 트릭을하고있다 :

<VirtualHost *:80> 
    ... # other configuration 
    FastCgiExternalServer {other parameters} -pass-header Authorization 
    ... # further configuration 
</VirtualHost> 

그것은 재 작성 규칙에 대한 필요성을 제거합니다. RewriteRule 솔루션이 작동하지 않을 때 내 솔루션을 찾았습니다. haproxy 뒤에 사용 된 아파치에서 올 수 있지만 Authorization 헤더는 HTTP_AUTHORIZATION 대신대신에 "이름이 바뀐 것"입니다.

희망이 도움이됩니다.