如何在set-header中拼接req.hdr()值与静态值Bearer
搞定请求头拼接+重命名的方案
嘿,这需求其实挺常见的,我给你捋清楚怎么实现:
核心就是当some-condition-applies条件满足时,把旧请求头的值揪出来,前面加上固定的Bearer 前缀,再塞进Authorization请求头里。
具体实现代码
假设你用的是支持req.hdr方法的网关/代理环境(比如Kong、Envoy这类),直接这么写就行:
-- 先判断条件是否成立 if some-condition-applies then -- 拿到旧请求头的值 local old_header_val = req.hdr("my-old-header-name") -- 拼接前缀,记得Bearer后面要加空格哦 local auth_header_val = "Bearer " .. old_header_val -- 设置新的Authorization请求头 set-header("Authorization", auth_header_val) end
几个要注意的点
- 一定要确认
my-old-header-name和实际传入的请求头名称一致,HTTP头大小写不敏感,但尽量精准点没毛病 - 别漏了
Bearer后面的空格!这是认证规范里的标准格式,少了空格后端大概率认不出来 - 如果担心旧请求头可能不存在(比如有时候客户端没传),可以加个非空判断,避免生成
Bearer nil这种无效内容:
if some-condition-applies and old_header_val ~= nil then local auth_header_val = "Bearer " .. old_header_val set-header("Authorization", auth_header_val) end
这样就能完美生成你要的Authorization: Bearer my-old-header-value-interpreted-from-req-hdr请求头啦。
内容的提问来源于stack exchange,提问作者Are
相关产品推荐
相关产品推荐

