无法使用Axios从localhost进行LinkedIn API调用

时间:2017-09-11 18:25:18

标签: javascript cors linkedin linkedin-api

我正在尝试使用axios get request访问linkedin配置文件,这对localhost无效,我收到以下错误

  

XMLHttpRequest无法加载   https://api.linkedin.com/v1/people/~:(id,email-address)?format=json。   对预检请求的响应未通过访问控制检查:否   请求中存在“Access-Control-Allow-Origin”标头   资源。因此不允许来源“http://localhost:8030”   访问。响应的HTTP状态代码为401。

我可以使用react-linkedin-login包获取访问令牌,获取访问令牌后我正在尝试以下代码

specific user

问题在于服务器如何接受请求我猜,它不允许localhost拨打电话我想。在部署和运行服务器之前,如何克服这个问题来实际开发服务。

感谢您的帮助..

3 个答案:

答案 0 :(得分:1)

这是因为浏览器限制称为“同源策略”,它阻止从作为其他域的一部分的URL获取数据或向其发布数据。如果其他域支持跨源资源共享(CORS),你可以解决它,但看起来LinkedIn没有,所以你可能遇到麻烦。

这方面的一个方法是拥有一个可以将您的请求代理到LinkedIn的网络服务 - 那里没有域名限制。

https://en.wikipedia.org/wiki/Same-origin_policy

https://en.wikipedia.org/wiki/Cross-origin_resource_sharing

答案 1 :(得分:1)

尝试jsonp进行CORS请求 - 参考 - axios cookbook

var jsonp = require('jsonp');
jsonp(linkedInUrl, null, function (err, data) {
  if (err) {
    console.error(err.message);
  } else {
    console.log(data);
  }
});

<强> 修改

使用jQuery执行JSONP请求并设置标题

$.ajax({url: linkedInUrl,
  type: 'GET',
  contentType: "application/json",
  headers: header, /* pass your header object */
  dataType: 'jsonp',
  success: function(data) {
    console.log(data);
  },
  error: function(err) {
    console.log('Error', err);
  },
});

答案 2 :(得分:0)

https://cors-anywhere.herokuapp.com/-在URL之前添加它,它将起作用