服务器未发送自定义响应 headers(Rails 设计)

Custom response headers not sent by server (Rails Devise)

我正在尝试在对 Rails 服务器.

使用 Postman(http 客户端)可以正常工作。 使用 OkHttp(java http 客户端),headers 不会出现在客户端中(我已经使用 Wireshark 进行了检查)。 当我处于调试模式时,它就可以工作...

邮递员的额外 header 是由于邮递员发送来源 header 并且服务器正在回复 CORS headers,即 Access-Control-....这些 header 是在正常的 HTTP header 中发送的,即不在响应之后。

但是这些访问控制 header 仅在从浏览器完成访问时才相关,因为它们控制 XHR 的跨源行为。由于您不在浏览器中,因此它们应该与您正在做的事情无关。相关的是响应的 body 和其他一些 header,在这里您不会发现任何差异。同样无关紧要的是,如果多个请求是在同一个 TCP 连接(HTTP keep-alive 由邮递员完成)或多个连接(OkHttp)中发送的,因为每个请求都是独立于另一个的并且使用相同的 TCP 连接只是一种性能优化。

如果你真的想得到这些特殊的 headers 你应该在你的 OkHttp 请求中添加一个 Origin header。请参阅 the OkHttp examples 了解如何添加您自己的 header。但正如我所说:这些访问控制 headers 应该与实际任务无关,并且不需要访问这些 headers.

Rails 项目的文件 "config/initializers/devise_token_auth.rb" 中有一个 属性 "config.batch_request_buffer_throttle"。我们将它从 5 秒更改为 0 秒。 属性 使当前令牌在该时间段内对以下请求可用。 作为原始文档:"Sometimes it's necessary to make several requests to the API at the same time. In this case, each request in the batch will need to share the same auth token. This setting determines how far apart the requests can be while still using the same auth token."

因此,当我们使用 Postman 或在 Java 调试中发出请求时,5 秒是 运行 允许 Devise 生成新令牌,然后将它们检索到客户端。