原文

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”, 值是“http://www.bbc.co.uk/, http://ocelot.com/”。这个值得意思是将 http://www.bbc.co.uk/ 替换成 http://ocelot.com/。相应的语法是:{find}, {replace}。

Pre Downstream Request

下面的位于一个ReRoute的配置会将 http://www.bbc.co.uk/ 替换成 http://ocelot.com/。 这个请求头在请求下游的时候会被修改,然后再发送至下游服务器。

 "UpstreamHeaderTransform": {
"Test": "http://www.bbc.co.uk/, http://ocelot.com/"
}

Post Downstream Request

下面的位于一个ReRoute的配置会将 http://www.bbc.co.uk/ 替换成 http://ocelot.com/。ocelot在收到下游服务器的响应的时候回将替换掉响应的http响应头。

"DownstreamHeaderTransform": {
"Test": "http://www.bbc.co.uk/, http://ocelot.com/"
},

Placeholders

header transformation支持placeholder。

  • {BaseUrl} - 这个使用的是Ocelot的base url。例如值为:http://localhost:5000
  • {DownstreamBaseUrl} - 这个使用的是下游服务的base url。例如值为:http://localhost:5000。这个只有在DownstreamHeaderTransform里面才有效
  • {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,
},

[译]Ocelot - Headers Transformation的更多相关文章

  1. [译]Ocelot - Claims Transformation

    原文 用户授权后才能使用此功能. 用户获得授权后claims将被发送到claims transformation中间件.用户授权后,我们首先调用claims to headers middleware ...

  2. .Netcore 2.0 Ocelot Api网关教程(10)- Headers Transformation

    本文介绍Ocelot中的请求头传递(Headers Transformation),其可以改变上游request传递给下游/下游response传递给上游的header. 1.修改ValuesCont ...

  3. [译]Ocelot - Big Picture

    原文 目录 Big Picture Getting Started Configuration Routing Request Aggregation Service Discovery Authen ...

  4. [译]Ocelot - Request Aggregation

    原文 Aggregate ReRoutes用来组合多个ReRoutes,将它们的响应结果映射到一个响应中返回给客户端. 为了使用Aggregate ReRoutes,你必须像下面的ocelot.jso ...

  5. [译]Ocelot - Quality of Service

    原文 可以针对每个ReRoute设置对下游服务的熔断器circuit breaker.这部分是通过Polly实现的. 将下面的配置添加到一个ReRoute下面去. "QoSOptions&q ...

  6. [译]Ocelot - Caching

    原文 Ocelot支持基本的缓存,目前Ocelot的缓存是通过CacheManager project实现的. 下面的示例展示了如何启用缓存: s.AddOcelot() .AddCacheManag ...

  7. [译]Ocelot - Rate Limiting

    原文 Ocelot支持对上游做访问限流,这样就可以保证下游不要负载太大了. 如果要启用访问限流,需要做如下配置: "RateLimitOptions": { "Clien ...

  8. [译]Ocelot - Service Discovery

    原文 你可以指定一个service discovery provider,ocelot将使用它来找下游的host和port. Consul 下面的配置要放在GlobalConfiguration中.如 ...

  9. [译]Ocelot - Getting Started

    原文 Ocelot专为.NET Core而设计. .NET Core 2.1 安装 首先需要创建一个netstandard2.0项目,然后再通过nuget安装. Install-Package Oce ...

随机推荐

  1. Django REST framework基础:认证、权限、限制

    认证.权限和限制 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制.然后 权限 和 限制 组件决定是否拒绝这个请求. 简单来说就是: 认证确定了你是谁 权限确定你能不 ...

  2. 5000量子位支持量子编程,D-Wave推出下一代量子计算平台计划

    5000量子位支持量子编程,D-Wave推出下一代量子计算平台计划 近日,全球量子商用化重要参与者 D-Wave 公司又有大动作:推出其5000量子比特量子计算的发展蓝图.D-Wave 下一代量子计算 ...

  3. Linux-基础学习(三)-Nginx学习

    1.nginx安装与部署 1.1 nginx入门 Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的 请求后才会响应,最终用于提供服务程序的 Web 服务器会通过 HTTP( ...

  4. Linux和Uboot下eMMC boot分区读写

    关键词:eMMC boot.PARTITION_CONFIG.force_ro等. 1. eMMC的分区 大部分eMMC都有类似如下的分区,其中BOOT.RPMB和UDA一般是默认存在的,gpp分区需 ...

  5. 区间RMQ问题

    简介 RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值 ...

  6. php中header函数参数的Cache-control的使用方法

    网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private.no-cache.max-age.must-revalidate等,默认为private.其作用根据 ...

  7. JQ——利用一个开关,点击一个按钮完成展开收起功能

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. flask 实现登录 登出 检查登录状态 的两种方法的总结

    这里我是根据两个项目的实际情况做的总结,方法一(来自项目一)的登录用的是用户名(字符串)和密码,前后端不分离,用form表单传递数据:方法二用的是手机号和密码登录,前后端分离,以json格式传递数据, ...

  9. 转 spring注解式参数校验

    转自: https://blog.csdn.net/jinzhencs/article/details/51682830 转自: https://blog.csdn.net/zalan01408980 ...

  10. 关于申请GMS认证来使用谷歌的一些服务应用及闭源API

    房间内的主要大象正在获取Google移动服务(GMS)的许可证.这是指预先选择的谷歌应用程序阵列,它将谷歌本身的精髓包含在其配置中 -  Google搜索,YouTube,Gmail,Chrome,G ...