29、使用 C++ 为 IIS 创建自定义 HTTP 模块

使用 C++ 为 IIS 创建自定义 HTTP 模块

在 Web 服务器的管理和扩展中,创建自定义的 HTTP 模块是一项非常有用的技能。本文将详细介绍如何使用 C++ 为 IIS 创建一个自定义的 HTTP 模块,以防止网站内容被其他网站进行跨链接。

模块与 IIS 管道的交互

模块与 IIS 管道的交互方式对于理解整个流程至关重要。在 IIS 管道中,不同的模块会在不同的请求处理阶段被调用。例如,模块 A 在处理 OnBeginRequest 后返回 RQ_NOTIFICATION_FINISH_REQUEST,这将阻止模块 B 或其他任何模块(包括默认的开箱即用模块)处理其自身的实现。同样,当模块 B 返回 RQ_NOTIFICATION_FINISH_REQUEST 结果时,会绕过所有后续模块(除了 LogRequest 和 EndRequest 通知)。

示例原生模块需求

假设我们有一个需求,要防止网站的内容被其他网站进行跨链接。例如,我们的网站包含一些图形内容,而其他网站将这些内容包含在自己的网页中,每次有人查看其他网页时,都会对我们的 Web 服务器造成访问,浪费宝贵的带宽和系统资源。

原生模块设计

在设计原生模块时,我们将使用 CGI 变量来检查 Web 请求的某些属性。具体使用以下两个 CGI 变量:
- HTTP_REFERER :包含请求发起的网站的 URI。空值可能表示请求是从书签、手动输入或搜索引擎机器人等发起的。如果请求是通过点击网页上的链接发起的(无论是内部引用,如图像链接还是实际用户点击 href 链接),则会包含发起网页的完整 UR

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值