如何在WSO2 APIM 4.0.0发布者的消息中介中添加常量自定义请求头?
WSO2 APIM 4.0.0 自定义请求头不生效问题排查与解决
问题描述
测试WSO2 APIM 4.0.0时,已发布REST API,希望向后端服务发送自定义请求头。按官方文档创建了如下中介序列:
<sequence name="test7" xmlns="http://ws.apache.org/ns/synapse"> <property name="custom-header" value="123456" scope="transport" action="set"/> </sequence>
将该序列配置为请求中介后,后端API打印的请求头中未包含自定义头:
{activityid=b8cd086c-18df-4067-9790-900a1fc1a2f1, accept=*/*, host=localhost:8080, connection=Keep-Alive, user-agent=Synapse-PT-HttpComponents-NIO}
期望的请求头应包含custom-header=123456:
{activityid=b8cd086c-18df-4067-9790-900a1fc1a2f1, accept=*/*, host=localhost:8080, custom-header=123456, connection=Keep-Alive, user-agent=Synapse-PT-HttpComponents-NIO}
解决方法
1. 确认请求中介的配置位置
- 进入API Publisher,编辑目标API,切换到「Message Mediation」标签页;
- 确保请求中介添加在「In Flow」的有效阶段(比如
Pre Authentication或Post Authentication阶段,避免放在认证前被拦截); - 检查是否有其他前置中介序列修改或移除了transport头。
2. 完善transport属性配置
在属性中明确添加类型声明,避免类型解析问题:
<sequence name="test7" xmlns="http://ws.apache.org/ns/synapse"> <property name="custom-header" value="123456" scope="transport" action="set" type="STRING"/> </sequence>
3. 检查API的允许头配置
- 进入API的「Runtime Configurations」标签页,找到「Allowed Headers」设置;
- 将
custom-header添加到允许列表中,防止网关过滤该头; - 若未配置过Allowed Headers,部分版本默认会过滤非标准头,手动添加后重试。
4. 加日志验证属性是否生效
修改中介序列添加日志,确认自定义头已被正确设置:
<sequence name="test7" xmlns="http://ws.apache.org/ns/synapse"> <property name="custom-header" value="123456" scope="transport" action="set"/> <log level="custom"> <property name="check_custom_header" expression="get-property('transport', 'custom-header')"/> </log> </sequence>
查看网关日志(repository/logs/wso2carbon.log),如果输出check_custom_header=123456,说明属性设置成功,问题出在后续转发环节;若未输出,检查序列是否被正确执行。
5. 排查后端服务接收逻辑
确认后端服务没有过滤自定义请求头,部分后端框架会默认只接收标准HTTP头,需要在后端配置中允许接收自定义头。
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

