不允许 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方法不传递飞行前请求