根据apache http服务器中的Request Header验证传入请求

时间:2011-12-10 12:13:34

标签: apache http-headers httpserver

我们在weblogic app服务器上运行了一个Web应用程序(JQuery和Spring)。应用服务器前面有一个apache http服务器。 所有传入的请求都将通过Web服务器到达应用服务器。

现在我们要求我们必须验证传入的http请求标头中的值,如果存在,则必须将请求发送到应用服务器。如果不是,我们会阻止请求,然后向最终用户显示静态错误页面。

我想知道我们是否可以在apache http服务器中实现这个逻辑。请指教。

1 个答案:

答案 0 :(得分:2)

您可以使用mod_rewrite执行此操作。您没有包含您的确切设置,但如果您有mod_proxy类型配置,您只需要确保重写不会干扰正常流量的传递。在一般意义上,在您的Apache配置中,您将:

  • 开启重写
  • 检查条件
  • 根据条件应用重写规则

举一个非常简单的例子,如果你在查询字符串中寻找一个键,并禁止访问(403),如果它不存在,你会做这样的事情:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !somekey
RewriteRule ^.*$ - [F,L]

这可能与您希望的一样复杂,您可以将条件链接在一起(隐式AND或显式或与[OR]标志相关),您可以提供实际页面而不是禁止消息。

与往常一样,在修补之前备份配置,并且使用.htaccess进行测试可能是个好主意(尽管出于性能原因,最好将其移动到生产负载的实际配置中)。

重写文档也是一个很好的资源:

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

这真的是非常好的文档。对于某些指针 - 你会想要查找标志([L] =最后; [P] =视为代理请求; [F] =禁止等等)你需要一个熟悉正则表达式语法的人

相关问题