需求: 国内 ip 访问网站显示正在维护中,非大陆 ip 正常访问。
使用 WAF ,直接设置来自 China 的 ip 阻止。 但是他显示的页面是 cloudflare 的禁止访问的页面,不太符合需求。
使用 worker ,用以下的代码部署, 来自大陆的 ip 能正常阻止,但是非大陆 ip 会一直重定向:
export default {
async fetch(request, env) {
let country = request.headers.get('cf-ipcountry')
if(country === 'CN') {
return new Response('Sorry, this page is not available.', { status: 403 })
}
return fetch(request)
}
}
请教一下大家有什么解决方法没有? (我并不专注于 js 和网络,所以有什么我需要了解的知识,还请不吝指出,我去了解,谢谢)
1
wdssmq 2023-05-15 19:05:36 +08:00
export default {
async fetch(request, env) { let country = request.headers.get('cf-ipcountry') if (country === 'CN') { return new Response('Sorry, this page is not available.', { status: 403 }) } // 获取请求的 URL const reqUrl = request.url; // 获取 path const path = new URL(reqUrl).pathname; // 真实请求的 URL const realUrl = 'https://www.baidu.com' + path; return fetch(realUrl) } } |
2
Alan3 OP @wdssmq #1 谢谢你的回复,但我找到问题所在了,并不是 worker 的代码问题造成的重定向次数过多。最后通过这个重定向解决参考: https://shenghuahuancai.cn/posts/%E4%BD%BF%E7%94%A8CloudFlare%E5%AF%BC%E8%87%B4%E7%BD%91%E7%AB%99%E9%87%8D%E5%AE%9A%E5%90%91%E7%9A%84%E6%AC%A1%E6%95%B0%E8%BF%87%E5%A4%9A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/ ,worker 代码并未做改动
|