【问题标题】:Trustpilot API pre-flight not Allowed不允许 Trustpilot API 飞行前
【发布时间】:2017-11-29 03:24:38
【问题描述】:

我在 vue 中使用 axios 库在 Trustpilot 上进行身份验证(带有标头的 POST),但浏览器发送了一个 pre-fligth 调用,并且 Trustpilot API 以错误响应我,因为不允许使用 OPTION 方法。

我认为身份验证请求是一个简单的请求(https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS),但 axios 将其作为一个不简单的请求,并且浏览器调用了一个 pre-fligth 请求。有解决这个问题的方法吗?

谢谢

【问题讨论】:

  • 你想发送什么?补充问题,您是否注意到:“在如图所示的“基本”身份验证的情况下,交换必须通过 HTTPS (TLS) 连接进行才能安全。”?
  • 我的代码是这样的:this.axios.request({ url: 'api.trustpilot.com/v1/oauth/…', method: 'POST', data:{ 'grant_type': 'password', 'username': ' xxxxxx@xxxxxx.com', 'password': 'xxxxxx' }, headers:{ 'Authorization': 'Basic XXXXXXXXXXXX', 'Content-Type': 'application/x-www-form-urlencoded' } })跨度>
  • 响应是这样的(对于 OPTION 方法)发送:XMLHttpRequest 无法加载api.trustpilot.com/v1/oauth/…。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

标签: api axios preflight trustpilot


【解决方案1】:

您无法对 trustpilot oauth 端点进行浏览器调用。因为授权由您的 apikey 和秘密组成。将其暴露给浏览器客户端会很容易受到攻击。

您的服务器将能够调用 API。

如果您没有服务器,则使用您的 client_id 和重定向 url 将用户重定向到 https://authenticate.trustpilot.com,用户可以登录。

您可以在此处查看更多详细信息:https://developers.trustpilot.com/authentication#implicit

【讨论】:

  • 好的,我想我必须将身份验证包装在 cUrl 调用中,并从我的应用程序上的保留链接返回响应。例如,我为身份验证过程制作了一个轻型 api 服务器。好的,谢谢
  • 是的,没错。这样,您就可以在后端保护秘密。
猜你喜欢
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 2020-12-21
  • 2018-02-17
相关资源
最近更新 更多