<-
Apache > HTTP 服务器 > 文档 > 版本 2.4

过滤器

可用语言:  en  |  es  |  fr  |  ja  |  ko  |  tr 

本文档介绍了在 Apache 中使用过滤器。

Support Apache!

另请参见

top

Apache 2 中的过滤

过滤器链在 Apache 2.0 及更高版本中可用,它使应用程序能够以高度灵活和可配置的方式处理传入和传出数据,无论数据来自何处。我们可以随意预处理传入数据和后处理传出数据。这基本上独立于传统的请求处理阶段。

Filters can be chained, in a Data Axis orthogonal to request processing

标准 Apache 发行版中过滤的一些示例是

Apache 还使用许多内部过滤器来执行诸如分块和字节范围处理之类的功能。

第三方过滤器模块实现了更广泛的应用程序。其中一些是

top

智能过滤

Smart filtering applies different filter providers according to the state of request processing

mod_filter,包含在 Apache 2.1 及更高版本中,使过滤器链能够在运行时动态配置。因此,例如,您可以设置一个代理来使用 HTML 过滤器重写 HTML,并使用完全独立的过滤器重写 JPEG 图像,尽管代理事先不知道源服务器将发送什么。这是通过使用过滤器利用程序来实现的,该利用程序根据运行时的实际内容分派到不同的提供程序。任何过滤器都可以直接插入链中并无条件运行,或者用作提供程序并动态插入。例如,

top

将过滤器公开为 HTTP 服务

过滤器可用于处理来自客户端的内容,以及使用 mod_reflector 模块处理来自服务器的内容。

mod_reflector 接受来自客户端的 POST 请求,并将 POST 请求中接收到的内容请求主体反映回响应中,在返回到客户端的途中通过输出过滤器堆栈。

此技术可用作在应用程序服务器堆栈中运行的 Web 服务的替代方案,其中输出过滤器提供对请求主体所需的转换。例如,mod_deflate 模块可用于提供通用压缩服务,或者图像转换过滤器可转换为图像转换服务。

top

使用过滤器

使用过滤有两种方法:简单和动态。通常,您应该使用其中一种;混合使用它们可能会产生意想不到的后果(尽管简单的输入过滤可以与简单的或动态的输出过滤自由混合)。

简单方法是配置输入过滤器的唯一方法,对于需要静态过滤器链的输出过滤器来说已经足够了。相关指令是 SetInputFilterSetOutputFilterAddInputFilterAddOutputFilterRemoveInputFilterRemoveOutputFilter

动态方法使静态和灵活的动态配置输出过滤器成为可能,如 mod_filter 页面中所述。相关指令是 FilterChainFilterDeclareFilterProvider

另一个指令 AddOutputFilterByType 仍然受支持,但已弃用。请改用动态配置。

可用语言:  en  |  es  |  fr  |  ja  |  ko  |  tr 

top

评论

注意
这不是问答部分。此处发布的评论应指向有关改进文档或服务器的建议,如果这些评论已实施或被认为无效/主题外,可能会被我们的版主删除。有关如何管理 Apache HTTP 服务器的问题应发送到我们的 IRC 频道 #httpd(在 Libera.chat 上)或发送到我们的 邮件列表