我正在尝试使用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拨打电话我想。在部署和运行服务器之前,如何克服这个问题来实际开发服务。
感谢您的帮助..
答案 0 :(得分:1)
这是因为浏览器限制称为“同源策略”,它阻止从作为其他域的一部分的URL获取数据或向其发布数据。如果其他域支持跨源资源共享(CORS),你可以解决它,但看起来LinkedIn没有,所以你可能遇到麻烦。
这方面的一个方法是拥有一个可以将您的请求代理到LinkedIn的网络服务 - 那里没有域名限制。
答案 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之前添加它,它将起作用