【问题标题】:Validate incoming request based on Request Header in apache http server根据 apache http 服务器中的请求标头验证传入请求
【发布时间】:2011-12-10 12:13:34
【问题描述】:

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

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

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

【问题讨论】:

  • 请阅读我们的常见问题解答,webmasters.stackexchange.com/faq,了解更多关于哪些问题适合我们的网站。这是一个很好的问题,它只属于 Stack Overflow。

标签: apache http-headers httpserver


【解决方案1】:

您可以使用 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] = 禁止等),并且您需要通常熟悉正则表达式语法的人

【讨论】:

    猜你喜欢
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2020-09-12
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多