本文介绍请求特征识别示例场景及结果。
代码
根据客户端请求的URL、请求方法、UserAgent、IP 等特征做不同的策略,以简单的封禁举例:
async function handleRequest(request) {
const url = new URL(request.url)
// 拒绝访问.txt或.mp4后缀名的请求
const extRegExp = new RegExp(/\.(txt|mp4)$/)
if (extRegExp.test(url.pathname)) {
return new Response("403", { status: 403 })
}
// 给Post请求返回不同的内容
if (request.method === "POST") {
return new Response("POST Request")
}
// 禁用特定UA的请求
const ua = request.headers.get("User-Agent") || ""
if (ua.includes("value")) {
return new Response("403", { status: 403 })
}
// 禁用指定客户端IP的请求,需读取 Ali-Cdn-Real-Ip
const clientIP = request.headers.get("Ali-Cdn-Real-Ip")
if (clientIP === "192.168.0.1") {
return new Response("403", { status: 403 })
}
return fetch(request)
}
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request))
})
结果
命中指定特征的请求:
正常请求: