2009-05-05 13 views
13

PHP'de bir REST API oluşturmaya çalışıyorum ve Amazon'un S3 yaklaşımına benzer bir kimlik doğrulama şeması uygulamak istiyorum. Bu, istekte özel bir 'Yetkilendirme' başlığının ayarlanmasını içerir.

$ _SERVER ['HTTP_AUTHORIZATION'] ile başlığa erişebileceğimi düşünmüştüm, ancak var_dump ($ _ SERVER) içinde bulunabilecek bir yer yok. Apache_request_headers() işlevi sorunumu çözer, ancak sunucum PHP'yi CGI olarak kullanır, bu yüzden kullanılamaz.

PHP'deki tüm istek başlıklarına erişebilmemin başka bir yolu var mı?

cevap

22

Çok gibi CGI bariyeri geçmiş üstbilgilerinizi almak için bazı mod_rewrite büyücülük yapmak gerekir: Eğer başka amaçlar için mod_rewrite kullanıyorsanız, bu $_SERVER['REDIRECT_HTTP_AUTHORIZATION'] olmuyor olabilir o

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

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

Not . yerine Apache Modülü arayüzünün CGI arayüzünü kullanırken

+0

Bu bir çekicilik gibi çalışır, teşekkürler. – vamin

+0

Benim için çalıştı! :) +1 – MrTechie

3

HTTP başlıkları ortam değişkenleri olarak kullanılabilir olmalıdır,

$_ENV['HTTP_AUTHORIZATION'] 

deneyin.

İlgili konular