当前位置: 首页 > 知识库问答 >
问题:

是否可以根据目标URL禁用Spring Cloud Sleuth标头传播?

翟默
2023-03-14

我们正在使用Brave的ExtraFieldPropagation特性将服务之间的自定义字段(例如,仅限内部的请求标识符)作为HTTP标头进行传播。

我们的一些服务在处理请求的过程中使用RestTemplate或外国客户端向外部服务发出请求。由于Sleuth使用传播特性增强了所有RestTemplate bean和外部客户机,这意味着外部服务只接收内部头,这是我想要避免的。

我知道有两种变通方法可以避免这种行为,这两种方法都有缺陷:

  • 手动实例化客户端对象,而不是使用Bean,这样Sleuth就不会添加拦截器。我在这里看到的缺点是,开发人员必须记住遵循这种模式以避免信息泄漏,这很难实施
  • 添加一个拦截器,从传出请求中删除这些标头。这里的缺点是a)我需要为RestTemplate和外国客户提供单独的拦截器(不是什么大买卖);b) 看起来外国客户机拦截器无法影响执行顺序(请参见此处的javadoc),因此我不能保证新拦截器将在Sleuth拦截器之后/最后运行

有没有一种方法可以定制Sleuth(例如,通过某种注入器bean),以便在向传出HTTP请求中注入头之前,我可以推断请求的目的地?我看到了有关定制喷油器bean的文档,但这些文档似乎在spring boot中已经不存在了

共有1个答案

江永安
2023-03-14

您可以取消对给定URL的采样,这意味着标头将被传播,但不会发送到Zipkin。您不能仅对一些URL禁用检测,因为我们正在检测注册为bean的所有组件。

 类似资料:
  • 我正在Java7项目中使用Gradle3和Sonarqube:https://github.com/cbeust/testng/blob/master/build.Gradle 我试图在外部gradle文件中定义SonarQube插件,但gradle只允许在主文件中定义插件。 我希望避免的重复。有可能吗?

  • 问题内容: 是否可以使用某种JavaScript来更改或设置HTTP请求的标头? 问题答案: 标头是在下载javascript之前很久才传递的,更不用说解释了。总而言之,答案是否定的。 但是,如果您是在ajax调用的上下文中讲话(让我们以jQuery为例),则可以编写请求标头。 请参阅使用jQuery从AJAX调用中读取标头。在使用jQuery进行AJAX调用之前,请参阅设置标头 但是,如果您的J

  • 问题内容: 这是根据官方文档提供的信息: 在PHP中可以使用四对不同的开始和结束标记。其中的两个和始终可用。另外两个是短标签和ASP样式标签,可以从php.ini配置文件中打开和关闭。因此,尽管有些人发现短标签和ASP样式标签很方便,但它们的可移植性较差, 通常不建议这样做 。 以我的经验,大多数服务器 确实 启用了短标签。打字 比打字要方便得多 程序员的便利性是一个重要因素,那么 为什么 不推荐

  • 问题内容: 我想向标签添加请求参数,例如?。 这可能吗?我找不到任何东西。 问题答案: 不可以,因为GET参数不是URL的一部分。 只需将它们添加到末尾即可: 对于Django 1.5+

  • 问题内容: 在Spring Security 3.0中,我们拥有使用方法的类,该方法根据不同的角色返回url。 现在,我们将转向Spring Security 3.1.0.RC3,由于从新版本中删除了类,因此我现在应该如何根据不同的角色确定url 。任何人都可以通过一些代码简要地介绍我的步骤,以便我可以实现自定义过滤器以重定向到不同角色的不同页面。 问题答案: 根据角色确定目标URL的最佳方法是在

  • 我正在开发一个使用JBoss RESTEasy(RESTEasy-jaxrs-3.0.8)的Web应用程序,但我想禁用RoleBasedSecurityFilter。java,只使用我自己的自定义类(它也实现,就像类一样,它们都是安全过滤器)。 这样做的原因是RoleBasedSecurityFilter.java的第43行调用了一个isUserInRole()方法,该方法在我的应用程序中总是返回