下面的数组包含请求标头,可能在$ _SERVER变量中缺少该标头
我目前正在尝试通过POST请求调用的PHP脚本中读取授权标头。 Authorization标头填充有令牌。看来Authorization标头在到达我的PHP脚本之前已被删除。我正在用Postman(Chrome插件)执行发布请求,并在PHP脚本中启用了CORS。我无权直接访问apache服务器。
HTTP请求:
Accept:*/*
Accept-Encoding:gzip,deflate
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4,ja;q=0.2
Authorization:Bearer mytoken
Cache-Control:no-cache
Connection:keep-alive
Content-Length:32
Content-Type:text/plain;charset=UTF-8
Host:www.myhost.com
Origin:chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/38.0.2125.104 Safari/537.36
PHP脚本:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Content-Type, Accept");
header("Content-Type: application/json");
$headers = getallheaders();
echo $headers['Authorization'];
上面的脚本输出''(=无)。
经过一段时间后,找到了解决此问题的方法。不知何故,剥夺了Authorization标头,并在.htaccess中添加了以下几行,便可以使其正常工作。
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
我必须首先将其添加到我的机器的Apache配置文件中:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
对于/etc/apache2/apache2.conf
中的Linux>
对于/usr/local/etc/httpd/httpd.conf
中的Mac(使用Homebrew),>
由于任何原因将其添加到.htaccess中均无效:
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
下面的数组包含请求标头,可能在$ _SERVER变量中缺少该标头
$headers = apache_request_headers();
((对于'HTTP_X_REQUESTED_WITH'ajax标头,尤其如此,可以通过以下方式找到:$headers['X_REQUESTED_WITH']
我不知道为什么我在NGINX上运行的php 5.4.45拒绝包含下划线的任何自定义标头:
ACCEPTED
REFUSED:CURLOPT_HTTPHEADER => array('my_Authorization:123456')
我希望它可以帮助某人。干杯
下面的数组包含请求标头,可能在$ _SERVER变量中缺少该标头
我不知道为什么我在NGINX上运行的php 5.4.45拒绝包含下划线的任何自定义标头:
在.htaccess中添加此文件SetEnvIf Authorization“(。*)” HTTP_AUTHORIZATION = $ 1。为我工作。