Apache mod 重写以阻止 xhr 请求

Apache mod 重写以阻止 xhr 请求

我观察到 xhr 请求被重定向到 oauth 服务器是一件坏事(因为它是一个机器人,它无法响应请求)。而且似乎响应是针对人的响应,因此重定向如下所示:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

我想要失败的请求(给出 407,但实际上 403 也可以)如下所示:

Accept:*/* (star slash star)

因此,我想要做的是重定向第一个标头接受,并重定向第二个标头 407(如果更简单,则重定向为 403)。我编写了一条规则,但它似乎与我的预期相反:

   RewriteEngine On
   RewriteCond %{HTTP:Accept} ^(text/html+)$
   RewriteRule ^ - [F,L]

这样我就可以通过,但如果我在插入符号前面粘贴一个!,如下所示:

RewriteCond %{HTTP:Accept} !^(text/html+)$

它给了我一个禁止访问 (403)。我的预期是底部的规则会允许我进入,因为我的 Accept 中有文本/html,而第二个规则不应该允许。然而,我观察到的是,顶部的规则让我通过,而底部的规则却抛出了 403。我的理解是倒退的还是这不是解决问题的正确方法?Ubuntu 15.10,Apache 2.4.12

非常感谢。

答案1

是的,我的理解是倒退的。这可能也不是一个好问题。本质上是起作用的规则,即最上面的规则

RewriteCond %{HTTP:Accept} ^(text/html+)$

意思是:匹配这个表达式。如果我在它前面加上 ! 或 Not,它当然会忽略其中包含的所有内容。

相关内容