Javascript 关于github oauth的cors问题
Javascript 关于github oauth的cors问题,javascript,github,xmlhttprequest,cors,Javascript,Github,Xmlhttprequest,Cors,来自“超级代理”的导入请求; const self=这个; 要求 .post('https://github.com/login/oauth/access_token') .set('内容类型','多部分/表单数据') .查询({ 客户id:客户id, 客户机密:客户机密, 回调:'http://127.0.0.1:3000/callback', 代码, 国家,, }) .end((错误、恢复)=>{ const token=res.body.access_token; console.log(
来自“超级代理”的导入请求;
const self=这个;
要求
.post('https://github.com/login/oauth/access_token')
.set('内容类型','多部分/表单数据')
.查询({
客户id:客户id,
客户机密:客户机密,
回调:'http://127.0.0.1:3000/callback',
代码,
国家,,
})
.end((错误、恢复)=>{
const token=res.body.access_token;
console.log(令牌);
self.setToken(令牌);
});代码>虽然所有这些都是通过发送正确的响应头来实现的,但是https://github.com/login/oauth/access_token
用于创建OAuth访问令牌的端点不支持来自Web应用程序的CORS请求
这种情况下非常具体的解决方法是使用:
网守:使客户端应用程序能够与GitHub一起运行OAuth。
由于一些与安全相关的限制,Github阻止您在仅客户端应用程序上实现OAuthWeb应用程序流
这真是个糟糕透顶的家伙。所以我们建立了守门人,这是你需要的缺失部分,以使其工作
一般的解决方法是:使用开放的反向代理,如
另请参见。用户应该如何关注向不受信任的开放式反向代理提供其客户端id和密码?@osowskit显然他们应该关注。使用风险自负。如果代理的所有者希望从请求中记录凭据,则可以。这就是为什么在他们自己的站点上运行Gatekeeper或其他类似的代理当然更好。(为什么我说开放反向代理是一个更为“通用的解决方案”,用于解决不选择接收跨源XHR/Fetch请求的站点的CORS限制。)或者使用类似AWS API网关的东西来创建您自己的授权调用,并为您的客户保密
var req = new XMLHttpRequest();
req.open('POST',
'https://cors-anywhere.herokuapp.com/https://github.com/login/oauth/access_token',
true);
req.setRequestHeader('Accept', 'application/json');
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send('code=' + encodeURIComponent(location.query.code) +
'&client_id=foo' +
'&client_secret=bar');
...