Add to Request
为上游请求添加请求头,只需如下一样将下面的配置添加到一个ReRoute里:
"UpstreamHeaderTransform": { "Uncle": "Bob"}
上面的例子中添加了一个键为Uncle,值为Bob的请求头。
支持Placeholders。
Add to Response
还可以为下游服务添加响应头, 如下一样将下面的配置添加到一个ReRoute里:
"DownstreamHeaderTransform": { "Uncle": "Bob"},
如果你想返回Butterfly APM trace id,可以如下配置:
"DownstreamHeaderTransform": { "AnyKey": "{TraceId}"},
Find and Replace
为了transform一个http头,我们需要指定一个http头的键,然后入下一样设置transform:
"Test": "http://www.bbc.co.uk/, http://ocelot.com/"
键是“Test”, 值是“, ”。这个值得意思是将 替换成 :{find}, {replace}。
Pre Downstream Request
下面的位于一个ReRoute的配置会将 替换成 。 这个请求头在请求下游的时候会被修改,然后再发送至下游服务器。
"UpstreamHeaderTransform": { "Test": "http://www.bbc.co.uk/, http://ocelot.com/"}
Post Downstream Request
下面的位于一个ReRoute的配置会将 替换成 。
"DownstreamHeaderTransform": { "Test": "http://www.bbc.co.uk/, http://ocelot.com/"},
Placeholders
header transformation支持placeholder。
- {BaseUrl} - 这个使用的是Ocelot的base url。例如值为:
- {DownstreamBaseUrl} - 这个使用的是下游服务的base url。例如值为:
- {TraceId} - 这个使用的是 Butterfly APM Trace Id。这个只有在
DownstreamHeaderTransform
里面才有效
Handling 302 Redirects
Ocelot默认是自动根据响应头里面的Location自动跳转的。如果你想将响应头里面的location返回给客户,可以如下一样配置。
"DownstreamHeaderTransform": { "Location": "http://www.bbc.co.uk/, http://ocelot.com/"}, "HttpHandlerOptions": { "AllowAutoRedirect": false,},
还可以使用BaseUrl
placeholder。
"DownstreamHeaderTransform": { "Location": "http://localhost:6773, {BaseUrl}"}, "HttpHandlerOptions": { "AllowAutoRedirect": false,},
如果使用了负载均衡,下游的base url可能会有多个,可能会导致上面的配置不能正常工作。这种情况下可以如下一样配置。
"DownstreamHeaderTransform": { "Location": "{DownstreamBaseUrl}, {BaseUrl}"}, "HttpHandlerOptions": { "AllowAutoRedirect": false,},