无法通过CORS策略阻止从原点_获取抓取:对预检请求的响应未通过访问控制检查:没有HTTP正常状态

时间:2019-06-11 14:48:19

标签: javascript oauth-2.0 fetch linkedin-api

使用OAuth2.0登录用户后,我试图向LinkedIn的API发出授权请求。我一直在收到有关CORS政策的错误消息,并且在发送正确的标头时需要帮助,这样我就不再收到这些错误消息。

我尝试包括几个不同的“ Access-Control-Request”标头,但我一直遇到相同的错误。我很确定这与我发送给API的“ Authorization”标头有关,但是文档中需要此标头才能接收正确的信息。

https://docs.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow?context=linkedin/context#step-1-configure-your-application

我用来拨打电话的代码如下所示...

async function getProfileData(accessToken, expiresIn) {
  const requestUrl = `https://api.linkedin.com/v2/me`;
  const response = await fetch(requestUrl, {
    method: 'GET',
    headers: {
      'Host': 'api.linkedin.com',
      'Connection': 'Keep-Alive',
      'Authorization': `Bearer ${accessToken}`,
      'Origin': REDIRECT_URI,
      'Access-Control-Request-Method': 'GET',
      'Access-Control-Request-Headers': 'Content-Type, Authorization'
    }
  });
  return response;
}

在这种情况下,accessToken来自上一个网络调用,该网络调用使用了上一步中的授权代码。在此之前的所有工作均正常进行,并且我得到的响应是我认为是有效的访问令牌。

以前,即使我按照文档的说明进行了检索,但仍然收到一条错误消息,指出我的访问令牌无效。我不确定这是否是相同的问题,但是我看不到我拥有无效令牌的原因(令牌没有过期,并且我从不拒绝登录权限)。

我希望从通话中得到的答复是已登录用户的基本个人资料数据,但我得到了:

OPTIONS https://api.linkedin.com/v2/me 401
getProfileData @ app.js:74
(anonymous) @ app.js:50

Access to fetch at 'https://api.linkedin.com/v2/me' from origin 'https://simple-linkedin-login2.netlify.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

0 个答案:

没有答案