apache - 没有用户代理的 Apache 2.4 阻止请求
问题描述
我的目标是简单地阻止没有设置 User-Agent 标头的请求。从Apache 的文档来看,这应该很简单。我一直在尝试使用(在 VirtualHost 部分)如下:
RewriteEngine on
RewriteCond ${HTTP_USER_AGENT} ^$
RewriteRule .* - [F]
我正在curl
使用以下内容进行测试(更改了域名):
curl -v --http1.1 https://example.com/ > /dev/null
为此发送的标头是:
> GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.68.0
> Accept: */*
curl -v --http1.1 --user-agent "" https://example.com/ > /dev/null
而为此发送的标头是:
> GET / HTTP/1.1
> Host: example.com
> Accept: */*
在这两种情况下,我都看到了我希望看到的发送内容。
无论我做什么,Apache 都会很高兴地为两者返回 200。我在这里想念什么?
解决方案
您快到了,Apache 服务器变量以 a 为前缀%
,而不是$
:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule .* - [F]
推荐阅读
- mql4 - 如何检查其他 EA 是否在 MQL4 中运行?
- angular - Angular 被动事件监听器
- python - 使用 RPLider (Python) 进行本地化
- tensorflow - 使用重用标志将 tf.variable_scope 转换为 tf.keras.layers.Layer
- c - 如何获取 shstrtab 的字符串?
- python - Python ctypes 将每个错误都变成“free(): invalid pointer”
- sql - 查询以仅选择第一条记录
- php - Laravel 异常处理程序也会记录请求
- ios - 限制设置包中文本字段中的字符数
- angular - 为什么 Angular 7 单页应用程序会不时自动刷新?