如何在Akamai中仅允许指定查询参数传递至源站并移除其他参数?
在Akamai中保留指定查询参数并过滤其余参数的实现方案
这种需求很常见,Akamai有两种主要方式可以实现,不用依赖只能全删参数的Remove Outgoing Request Parameters功能:
方式一:使用Property Manager规则构建器(适合静态参数列表)
- 创建新规则,将触发条件设置为你需要应用该逻辑的路径、域名或其他匹配条件
- 在规则中添加修改查询字符串行为,选择「保留指定参数」的模式
- 在参数输入框中逐个填入你需要保留的参数名(比如
utm_source、content_id),多个参数用逗号分隔 - 保存并发布规则,生效后非指定参数会被自动过滤,不会传递到源站
方式二:使用EdgeWorkers脚本(适合动态/复杂逻辑场景)
如果需要更灵活的控制(比如根据请求路径动态调整允许的参数,或处理参数大小写问题),可以用EdgeWorkers脚本实现:
export async function onClientRequest(request) { // 定义允许保留的参数列表 const allowedParams = ['utm_source', 'content_id', 'lang']; const urlObj = new URL(request.url); const filteredSearchParams = new URLSearchParams(); // 遍历允许的参数,保留存在的参数值 allowedParams.forEach(param => { if (urlObj.searchParams.has(param)) { filteredSearchParams.append(param, urlObj.searchParams.get(param)); } }); // 更新请求URL的查询字符串 urlObj.search = filteredSearchParams.toString(); request.url = urlObj.toString(); }
- 将脚本上传并部署到你的EdgeWorkers实例
- 在Property Manager中创建规则,关联该EdgeWorkers脚本到对应的请求阶段即可
注意事项
- 测试时直接发起带多余参数的请求,检查源站日志确认非允许参数是否被过滤
- Property Manager的参数匹配默认是大小写敏感的,若需要忽略大小写,建议用EdgeWorkers脚本处理
- 若参数值包含特殊字符,EdgeWorkers的URLSearchParams会自动处理编码,无需额外操作
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

