0

我在 apache 2.2 中有一个自定义模块,用于检查引荐来源标头并决定是放弃请求还是执行答案处理。Apache 位于 cloudfront cdn 下,因此不会转发像 user-agent 和 referrer 这样的标头。

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

总结一下,我将在 cookie 中获取自定义值并将其放入引用标题并在我们的自定义模块中处理它。

<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 已发送到服务器。我尝试了上面的示例,但它不起作用。任何想法?

4

1 回答 1

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 >
于 2013-11-06T12:58:39.653 回答