【问题标题】:How can I tell a specific spray-client request to follow all redirects?如何告诉特定的喷雾客户端请求遵循所有重定向?
【发布时间】:2016-04-14 08:40:06
【问题描述】:

我的应用中有一个特定的管道,它必须遵循所有重定向(为了理智起见,最多 50 个),跨任何域和协议(例如,它可以遵循 http://somewhere.comhttps://somewhere.else.com),但仅适用于 GET要求。我的应用程序中没有其他管道应该这样做。

这是现在的样子:

val pipeline = sendReceive ~> decode(Gzip) ~> decode(Deflate) ~> unmarshal[String]

如何以与主机无关的方式(即不通过配置选项或HostConnectorSetup)在管道的配置中指定这一点?

【问题讨论】:

    标签: redirect spray http-redirect spray-client


    【解决方案1】:

    我认为您无法创建具有定制行为的特定管道。

    名为maxRetries 的重定向计数器存储在RequestContext 中,位于名为HttpHostConnector 的私有对象内。 而且这个信息只来自HostConnectorSettings

    所以我想添加一个更新的HostConnectorSettings 来添加自定义行为,但恐怕它是在Http 对象中定义的。所以没有更新此设置的选项。它们在配置选项中定义。正如您所说,您正在寻找另一种选择,但这并不能解决问题。

    最后一件事,我认为也不能仅更改 GET 请求的行为。 Here 你可以看到关注RFC2616 是如何工作的。

    所以 TLDR:所有管道都将遵循重定向或不遵循重定向,具体取决于您的配置,但无法区分哪些会执行或不会执行。

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 2012-07-27
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多