为什么我总是收到 206 个代码?

为什么我总是收到 206 个代码?

我已经厌倦了在我的日志中看到一系列部分内容 206 请求,这些请求很可能来自在加载时读取 pdf 的浏览器。所以我设置了“accept-ranges none”。此后 206 的数量大大减少。但偶尔还是会有一些。为什么?也许我误解了,但我认为该设置告诉客户端它必须一次获取整个资源。

我想知道为什么,如果部分内容请求应该被拒绝,那么为什么有些这样的请求能够通过呢?

答案1

您究竟如何设置“accept-ranges none”?

如果我稍微理论一下,服务器在收到请求后将标头发送到客户端浏览器。如果内容范围请求是第一个收到的,浏览器不知道您会接受和不会接受哪些标头。它盲目地发送部分请求,您的 Apache 实例会根据请求处理它。

或者,浏览器可能不尊重您的接受范围标头(尽管您的观察表明绝大多数浏览器都尊重您的接受范围标头)。

如果您希望禁用服务器端的行为,请执行以下操作:

RewriteEngine On
RewriteLog /var/log/apache2/rewrite.log
RewriteLogLevel 3
RewriteCond %{REQUEST_METHOD} ^(HEAD|GET) [NC]
RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+
RewriteRule .* - [F]

可能会有所帮助。请参阅以下链接了解更多详情:

https://bechtsoudis.com/hacking/use-mod_rewrite-to-protect-from-apache-killer/

相关内容