如何在apache 2.2上的自定义处理程序之前设置http标头

时间:2013-10-20 21:07:59

标签: apache cookies http-headers http-referer

我在apache 2.2中有一个自定义模块,它检查referrer标头并决定是删除请求还是执行答案的过程。 Apache位于cloudfront cdn下,因此不会转发像user-agent和referrer这样的标头。

解决方案是使用referrer在请求中添加一个cookie,然后从apache端获取,并使用它来覆盖referrer头。这可能吗?

总结我会在cookie中获取自定义值并将其放入referrer标头并在我们的自定义模块中处理它。

<VirtualHost *:80>
    RequestReadTimeout header=10-30,MinRate=500
    RewriteEngine On
    Header set Referer HTTP_COOKIE:referer 
    RequestHeader unset Authorization
    <Location /getobject>
            SetHandler getobject
    </Location>

我在浏览器上使用调试工具进行了测试,我确信将cookie发送到服务器。 我试过上面的例子,但它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我可以回答自己 我可以通过cookie中的javascript在服务器上添加我需要的标题

document.cookie="referrer="+window.parent.location;

之后在服务器上我可以使用

SetEnvIfNoCase Cookie ^ $ "( referrer = \ w *: \ / \ / \ w *)" HTTP_MY_COOKIE = $ 1
SetEnvIfNoCase HTTP_MY_COOKIE " (http : \ / \ / . * \ . \ w *)" Referrer = $ 1 
<IfModule mod_headers.c>
  RequestHeader % { Referer } and Referrer
</IfModule >