如何使用Apache 2.4设置授权标头?

时间:2018-05-22 19:18:35

标签: apache http-headers authorization request-headers setenvif

我目前正在开发一个网络地图应用程序。我使用Apache 2.4,PHP,Javascript和Dojo(用于映射的javascript库)。 Dojo正在向webservices发出请求(托管在https:// host / server / rest / services / ...并由我公司的其他部门管理)。但是为了访问这些Web服务,需要使用Basic进行身份验证。

因为他们没有像他们那样实现令牌身份验证(我们可以使用dojo),所以当我们连接到应用程序以访问webservices中的数据时会出现一个弹出窗口。我想配置Apache(我的 httpd.conf )以避免为我们的用户弹出这个弹出窗口,并设置了一个正确的Authorization标头,该标头将随Dojo对我们的webservices的每个请求一起发送。

我的第一个想法是使用 headers_module

设置标头
RequestHeader set Authorization "Basic ****" 

然后使用 rewrite_module 和我在网上找到的内容:

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)$ [NC]
RewriteRule /.* - [E=HTTP_AUTHORIZATION:%1]

但它似乎不起作用,因为如果我检查:

$headers = apache_request_headers();
$server = $_SERVER["HTTP_AUTHORIZATION"];

$ headers 包含我想要的内容,但 $ server 不包含

所以我继续前进并决定选择 setenvif_module ,这似乎是一个很好的解决方案。我现在有:

RequestHeader set Authorization "Basic ****"
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

即使我不明白 $ 1 的含义及其作用。

为了进一步解释,我的应用程序有一个登录页面index.php,其中没有发出主机/服务器/ rest / services请求,HTTP_AUTORIZATION看起来是空的。一旦我登录到我的页面application.php,所有的请求都被发出,HTTP_AUTHORIZATION似乎充满了我想要的东西" Basic ****",但是出现了一个空的REDIRECT_HTTP_AUTHORIZATION并且弹出来自仍然会出现要求用户和密码的网络服务。

你知道我错过了什么或者做错了什么吗? 谢谢你的帮助。

0 个答案:

没有答案