Cloudflare workers不完全指南

Cloudflare workers不完全指南

众所周知的是互联网山有一个超级知名的大善人,此人被世人尊称为赛博佛祖,你只需要自己拥有一个域名就能在上面解锁很多强大的功能,包括但不限于防火墙,workers,域名解析,邮件服务等。

本文主要尝试讲解一下cloudflare的workers服务,你可以将它看作一个可编程的代理服务器,类似nginx的lua脚本,不同的是它要强大的多,因为它不只是代理,还可以集成cloudflare的其他服务,比如数据库等,它介于客户端和后端之间,所以可以操作客户端请求,后端响应,因此可以实现非常多的有趣的功能,具体的案例可以参考官方文档: https://developers.cloudflare.com/workers/examples/,官方示例代码分类如下

本文是一个系列文章,系列文章内容安排如下:

增删改查客户端请求

增删改查后端响应

认证/重定向/缓存

静态文件

其他编程语言支持(如Python和Rust)

快速入门的例子

下面的代码会将客户端所有的信息以json的格式返回给客户端

// 获取客户端请求信息

// https://ifconfig.youerning.top/

addEventListener('fetch', event => {

event.respondWith(handleRequest(event.request))

})

async function handleRequest(request) {

// 获取客户端IP(优先使用CF专用头)

const ip = request.headers.get('CF-Connecting-IP') ||

request.headers.get('X-Forwarded-For') ||

'IP not available';

// 获取请求头信息

const headers = {};

for (const [key, value] of request.headers) {

headers[key] = value;

}

// 获取Cloudflare提供的扩展信息[1,5](@ref)

const cfInfo = request.cf ? { ...request.cf } : {};

// 可选:添加地理位置信息[3,5](@ref)

if (!cfInfo.country) {

cfInfo.country = request.headers.get('CF-IPCountry');

cfInfo.city = request.headers.get('CF-IPCity');

}

// 构建响应对象

const responseData = {

ip: ip,

headers: headers,

cf: cfInfo,

timestamp: new Date().toISOString(),

method: request.method,

url: request.url

};

// 返回JSON响应

return new Response(JSON.stringify(responseData, null, 2), {

headers: {

'Content-Type': 'application/json',

'Access-Control-Allow-Origin': '*' // 允许跨域访问

}

});

}

效果如下:

Playground

如果你想不创建workers就测试workers代码,可以登陆cloudflare的 workers playground来测试代码,地址:https://workers.cloudflare.com/playground

总结

cloudflare的workers可以做的事情超级多,唯一受限的是自己的想象力,如果跟cloudflare的数据等其他服务绑定的话完全可以整个后端代码放在上面,如果业务比较轻的话,如果业务比较重,肯定还是得自己搞后端服务器,并且配置各种服务,而cloudflare的好处是免费额度足够大。

唯一的缺点可能是,cloudflare在中国的延迟问题,但这个问题见仁见智吧,可以忍受的自然可以忍受。

🌟 相关推荐

跳绳用英语怎么说
365世界杯

跳绳用英语怎么说

📅 10-14 👀 8423
十大免费在线观影网站,让您随时畅享高清大片
韵达快递怎么投诉?最全投诉指南,快速解决你的快递问题!