如何为部署到Heroku的cors-anywhere配置速率限制与白名单
部署cors-anywhere到Heroku的配置方案
1. 配置文件选择:优先新建独立JS文件,不要修改源文件
直接修改cors-anywhere的官方源文件会导致后续同步官方安全更新、功能迭代时出现代码冲突,维护成本极高。你只需要在项目根目录新建自定义入口文件调用cors-anywhere的核心能力即可,完全不需要触碰原有源码。
2. 速率限制规则配置示例
在项目根目录新建server.js文件,填入以下代码,替换成你自己的个人网站域名即可:
// 引入cors-anywhere核心库 const cors_proxy = require('./lib/cors-anywhere'); // 替换为你个人网站的实际源,本地开发可同时添加localhost地址 const PERSONAL_SITE_ORIGIN = 'https://你的个人网站域名.com'; cors_proxy.createServer({ // 不需要限制请求源的话这里放空数组,要限制仅你的网站可用就填[PERSONAL_SITE_ORIGIN] originWhitelist: [], // 速率限制配置 rateLimits: { // 全局默认限制规则:1分钟内每个IP最多请求60次,可自行调整数值 default: { interval: 60 * 1000, max: 60 }, // 你的个人网站无速率限制 [PERSONAL_SITE_ORIGIN]: { interval: 60 * 1000, max: Infinity } }, // 基础安全配置,可按需调整 requireHeader: ['origin', 'x-requested-with'], removeHeaders: ['cookie', 'cookie2'] // 监听Heroku分配的端口,本地默认跑8080 }).listen(process.env.PORT || 8080, () => { console.log('CORS代理服务已启动'); });
3. Heroku部署适配
修改项目根目录package.json文件中的scripts配置,将启动指令指向你新建的入口文件:
{ "scripts": { "start": "node server.js" } }
修改完成后正常推送到Heroku部署即可。
4. 配置有效性验证
- 用你的个人网站发起多次跨域请求,不会触发
429 Too Many Requests错误 - 用其他域名、或者本地Postman直接调用代理接口,请求量达到你设置的全局阈值后会返回429错误,说明规则生效
内容的提问来源于stack exchange,提问作者Sixl
相关产品推荐
相关产品推荐

