PHP POST 请求中缺少授权标头

2022-08-30 08:11:02

我目前正在尝试读取使用POST请求调用的PHP脚本中的授权标头。授权标头填充了令牌。似乎授权标头在到达我的PHP脚本之前以某种方式被删除了。我正在使用Postman(Chrome插件)执行post请求,并在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

脚本:

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'];

上面的脚本输出 “” (= 无)。


答案 1

不知何故,标题被剥离了。通过在我的中添加以下行,我能够让它工作。Authorization.htaccess

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

答案 2

我首先要把它添加到我的机器Apache配置文件中:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

在 Linux 上/etc/apache2/apache2.conf

在 Mac 上使用 Homebrew 在/usr/local/etc/httpd/httpd.conf

在具有“本机”Apache的Mac上:或:/private/etc/apache2/httpd.conf/etc/apache2/httpd.conf

由于任何原因,将其添加到.htaccess都不起作用:

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

推荐