【问题标题】:Same-origin policy blocking API request on remote同源策略阻止远程 API 请求
【发布时间】:2020-05-27 03:45:24
【问题描述】:

“远程”部分是我对此感到困惑的原因。我正在尝试向https://api.smarkets.com/v3/sessions 发出 POST 请求。路由是为 API 的后续请求创建会话令牌。

如果我在本地机器上执行此请求,它可以正常工作。我收到 2xx 响应。但是,如果我在远程计算机上尝试(我昨晚启动的 DO 框),我会收到“503 服务暂时不可用”响应。

我尝试通过浏览器登录,但得到了相同的响应。我raised this question to Smarkets & 他们没有意识到这可能是由于 Smarkets 实施的同源政策。

一段时间后,我通过禁用同源策略设法通过 Chrome 登录。 API 请求仍然失败。

根据我对同源政策的有限了解(如果我错了请纠正我),它指定了允许从某些来源返回哪些资源。类似于 CORS 问题。为什么我必须在远程浏览器上显式禁用网络安全才能登录 smarkets.com,但我本地计算机上的浏览器可以正常登录而无需修改?

我在上面强调的问题显示了我尝试了哪些方法来使其发挥作用。无论我尝试设置什么请求标头,响应标头始终与 X-Frame-Options 响应标头始终设置为 SAMEORIGIN 相同,再次根据我的理解,只允许发送资源到发件人的同一来源。 IE。从 smarkets.com 发送的资源只能通过来自 smarkets.com 的请求访问。

我当前的请求尝试是(with httpie):

http POST https://api.smarkets.com/v3/sessions/ 'Access-Control-Request-Headers: Content-Type, Accept, Host, Origin' 'Access-Control-Request-Methods: POST, OPTIONS' 'Origin: https://smarkets.com' username=<username> password=<password> --print=Hh

请求和响应标头是:

我真的在寻找;

  • 明确同源政策的实施内容
  • 为什么这个请求在我的本地机器上成功,而不是在远程 DO 盒子上
  • 我怎样才能让这个请求成功?

Smarkets 的用户似乎认为这是同源问题,但可能不是。

编辑:

这不是防火墙问题,因为我禁用了 Ubuntu 的内置防火墙。我正在通过来自同一来源的 http(s) 执行其他请求,所以我无法弄清楚这个有什么不同

编辑 2:

以下是成功请求/响应标头的示例:

我能够从同一个盒子向不同来源进行其他 API 调用,包括:

  • https://api.betdaq.com
  • https://api.betfair.com
  • https://api.matchbook.com

我没有针对盒子上的任何来源添加任何配置,所以我真的不确定这个问题是什么。我已经添加了我能想到的所有可能的 CORS 请求标头,但仍然没有运气。

编辑 3:

令人讨厌的是,这个问题现在已经得到修复,因为供应商 API 默认将 DigitalOcean IP 列入黑名单...

【问题讨论】:

    标签: cors same-origin-policy


    【解决方案1】:

    Cors 既是服务器又是客户端。服务器定义策略,客户端可以强制执行它。例如,浏览器会强制执行它,因为它更安全(此处不详述)。因此,在您的浏览器中禁用同源策略或使用不受信任的浏览器是一个安全问题。

    同样,客户端可以强制执行该策略。据我所知,大多数命令行 http 客户端都不会强制执行它。这可以解释为什么您的 httpie 请求不会失败。

    从浏览器的角度来看,您无法解决问题。同样,它是定义策略的服务器。您可以做的是创建代理服务器。您可以指定自己的 cors 政策。浏览器向您的代理服务器发出请求。您的代理服务器将请求传递给实际服务器。

    【讨论】:

      【解决方案2】:

      Cors 或多或少总是服务器端的东西。如果供应商暴露了一些 api 来命中,那么他们应该确保 cors 被禁用。除了和他们谈论这件事之外,你真的无能为力。不得不从 chrome 中禁用 cors 是个坏主意。

      【讨论】:

        猜你喜欢
        • 2020-05-31
        • 2017-05-09
        • 2021-04-04
        • 2014-10-17
        • 2015-07-22
        • 2018-04-20
        相关资源
        最近更新 更多