Nasıl $ _SERVER görünmüyor istek başlıklarını erişebilir?

3 Cevap php

PHP bir REST API oluşturmak için çalışıyorum ve ben Amazon'un S3 yaklaşımına benzer bir kimlik doğrulama düzeni uygulamak istiyorum. Bu isteği özel bir 'Authorization' başlığı ayar içerir.

Ben $ _SERVER ['HTTP_AUTHORIZATION'] ile başlığını erişmek mümkün olacağını düşündüm, ama o var_dump ($ _SERVER) bulunabilir hiçbir yerde bulunuyor. Apache_request_headers () işlevi benim sorunu çözmek istiyorum, ama benim ana CGI olarak uygular, bu nedenle kullanılamaz bulunuyor.

PHP tam istek başlıklarını erişebilirsiniz başka bir yolu var mı?

3 Cevap

Bunu gibi, CGI bariyer geçmiş başlıkları almak için bazı mod_rewrite sihirbazlık yapmak gerekir:

RewriteEngine on
RewriteRule .? - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

<?php
    $auth = $_SERVER['HTTP_AUTHORIZATION'];
?>

Başka amaçlar için mod_rewrite kullanıyorsanız, bu bitebileceğini unutmayın $_SERVER['REDIRECT_HTTP_AUTHORIZATION'].

Denemek

$_ENV['HTTP_AUTHORIZATION']

CGI arayüzü yerine Apache Modülü arabirimini kullanırken, HTTP başlıklarını ortam değişkenleri olarak mevcut olmalıdır.

HTTP ilgili erişim için her türlü olanak fantastik PECL uzantısı yok. PECL_HTTP ve daha özel olarak http://php.net/http ve http://php.net/manual/en/function.http-get-request-headers.php.