通知我的 Geni API 速率限制的公开标头在哪里?

问题描述 投票:0回答:1

每当我使用 Client Side Flow 通过 OAuth2 授权我的 Geni 应用程序时,我都可以成功让它对我进行身份验证,但我收到错误:

{"error":{"type":"ApiException","message":"Rate limit exceeded."}}

(我正在使用端点

https://www.geni.com/api/user/metadata?ids="[my_id]"

根据文档,可以在 HTTP 标头中检查速率限制。 但是,当我检查 Google Chrome 网络选项卡中的响应标头时,我看到的是:

==Response Headers==
Access-Control-Allow-Credentials: true

Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description, X-Requested-With, X-Prototype-Version, X-API-Rate-Limit, X-API-Rate-Remaining, X-API-Rate-Window

Access-Control-Allow-Methods: POST, GET, OPTIONS

Access-Control-Expose-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description, X-Requested-With, X-Prototype-Version, X-API-Rate-Limit, X-API-Rate-Remaining, X-API-Rate-Window

所以像

X-API-Rate-Window
这样的东西就在那里,被授予公开权限,但它们只是而不是,并且没有相应的附加标头将这些名称用作键。因此,我想不出一种方法可以从它们中提取任何有用的信息。

有人可以建议我如何读取剩余的速率限制,以及如何在不触发它的情况下访问元数据信息吗?

谢谢!

(P.S.我已将这个问题发布到Geni 的论坛,但没有收到任何回复,这就是我在这里发布的原因:))

xmlhttprequest http-headers rate-limiting response-headers
1个回答
0
投票

我终于解决了这个问题。我了解了预检请求以及我之前查看过其响应标头的请求是如何实现的。

事实证明 Geni was 将其自定义标头传递给我的主要请求,我自己的代理 PHP 文件中只有一行代码,省略了大多数标头。

  foreach ( $header_text as $header ) {
    if ( preg_match( '/^(?:Content-Type|Content-Language|Set-Cookie):/i', $header ) ) {
      header( $header );
    }
  }

(我正在使用这个代理,供参考。)

当我从代理中删除该正则表达式检查时,所有标头开始出现!

© www.soinside.com 2019 - 2024. All rights reserved.