更新时间:2023-11-30 11:03:29
本章示例为通过【边缘函数】实现页面自适应。
代码说明:对于使用Chrome浏览器访问的终端,页面会被改写,其他浏览器终端访问,显示原文。
详细代码
async function handleRequest(request) {
let response = await fetch(request)
response.headers.set("X-Version", "petshop-v1")
if (isFromChrome(request) && isHtml(response)) {
console.log("rewrite page")
let body = await response.text()
body = body.replace('Make Your Pets Happy', '让您的宠物永远快乐!')
body = body.replace('Dolore tempor clita lorem rebum kasd eirmod dolore diam eos kasd.',
'只有用Chrome浏览器访问才会改写</br>其他浏览器访问将显示原文</br>')
return new Response(body, response);
} else {
console.log("pass page")
return response
}
}
function isFromChrome(request) {
let userAgent = request.headers.get("User-Agent")
return userAgent && userAgent.toLowerCase().includes("chrome")
}
function isHtml(response) {
let contentType = response.headers.get("Content-Type")
return contentType && contentType.toLowerCase().includes("text/html")
}
addEventListener("fetch", event => {
return event.respondWith(handleRequest(event.request))
})
注:页面改写的应用很广泛,线上成熟的场景有敏感词审计、外链改写、全站IPv6访问支持等。