不允许 Trustpilot API 飞行前

Posted

技术标签:

【中文标题】不允许 Trustpilot API 飞行前【英文标题】:Trustpilot API pre-flight not Allowed 【发布时间】: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”标头。 【参考方案1】:

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

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

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

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

【讨论】:

好的,我想我必须将身份验证包装在 cUrl 调用中,并从我的应用程序上的保留链接返回响应。例如,我为身份验证过程制作了一个轻型 api 服务器。好的,谢谢 是的,没错。这样,您就可以在后端保护秘密。

以上是关于不允许 Trustpilot API 飞行前的主要内容,如果未能解决你的问题,请参考以下文章

调用.net web api时,Angular Delete方法不传递飞行前请求

AWS API Gateway CORS 飞行前检查失败

与 API 的连接总是导致 CORS 飞行前错误

为啥我在 Express 上设置 CORS 时出现飞行前错误?

我们应该在发送响应时关闭飞行前 Cors 请求的连接吗?

多个 CORS 适用于 GET 但不适用于 PUT/POST 与飞行前请求 Web api 2