阅读视图

发现新文章,点击刷新页面。

cloudflare使用express实现api防止跨域cors

大家好,我是1024小神,想进 技术群 / 私活群 / 股票群 或 交朋友都可以私信我,如果你觉得本文有用,一键三连 (点赞、评论、关注),就是对我最大的支持~

在 Cloudflare Workers 上,必须自己处理 CORS,Express 默认的 cors 中间件 并不会自动生效。

在中间件中写一个cors.ts文件,里面的代码如下:

import { Request, Response, NextFunction } from 'express';

export function corsMiddleware(req: Request, res: Response, next: NextFunction) {
// ⚠️ in production, write the specific domain
res.setHeader('Access-Control-Allow-Origin', '*');

res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');

res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');

// handle preflight request
if (req.method === 'OPTIONS') {
return res.sendStatus(204);
}

// next middleware
next();
}

然后配置中间件在所有的路由前面:

然后重启项目,再次发送请求就没事了:

如果你有好的想法或需求,都可以私信我,我这里有很多程序员朋友喜欢用代码来创造丰富多彩的计算机世界

cloudflare的worker中的Environment环境变量和不同环境配置

大家好,我是1024小神,想进 技术群 / 私活群 / 股票群 或 交朋友都可以私信我,如果你觉得本文有用,一键三连 (点赞、评论、关注),就是对我最大的支持~

在cloudflare中配置不同的环境变量和环境是开发中肯定会遇到的,比如密钥不能明文存储,比如开发环境和测试环境隔离,这里的配置和在vite中配置环境变量还是不一样的,所以这里记录一下。官方文档:developers.cloudflare.com/workers/wra…

环境变量

环境变量的文档:developers.cloudflare.com/workers/wra…

或者在wrangler.jsonc同级目录配置.env文件:注意.env文件不应该被git记录

API_HOST="value"
API_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"

就是在wrangler.jsonc中定义变量名称,然后在代码中获取:

export default {
  async fetch(request, env, ctx) {
    return new Response(`API host: ${env.API_HOST}`);
  },
};

这里有更详细的用法说明:developers.cloudflare.com/workers/con…

当然wrangler.jsonc定义的是配置会被git同步到仓库中,肯定是不安全的,所以这里配置的一定是不重要的或测试环境的变量,在后台worker中可以配置生产环境的变量:

不同的环境

为不同的环境配置不同的环境变量也是必须的,这里有两种方式,一个是在Wrangler.jsonc中配置,另外一个就是通过配置文件.env.test、.env.prod等实现,就和在前端中配置一样简单。我这里推荐使用配置文件的方式,因为这种方式可以避免环境变量泄漏风险。

配置.env.test文件:

使用命令启动:

wrangler dev --env test

就可以看到加载的环境变量:

或者写一个接口来查询环境变量信息:

得到的结果:

如果你有好的想法或需求,都可以私信我,我这里有很多程序员朋友喜欢用代码来创造丰富多彩的计算机世界
❌