错误描述
GitHub无法登录显示错误:
Error: Request failed with status code 403
问题原因
点击 此处 查看大佬分析。
解决方案
先在配置文件_config.yml的gitalk配置项中加一个proxy:
gitalk:
enable: true
clientID:
clientSecret:
accessToken:
repo: blog-comments
owner: Hanpeng-Chen
admin: ['Hanpeng-Chen']
perPage: 10
distractionFreeMode: true
language: zh-CN
proxy: https://netnr-proxy.cloudno.de/https://github.com/login/oauth/access_token
然后在gitalk.ejs中加上proxy配置:
let gitalk = new Gitalk({
clientID: '<%- theme.gitalk.oauth.clientId %>',
clientSecret: '<%- theme.gitalk.oauth.clientSecret %>',
repo: '<%- theme.gitalk.repo %>',
owner: '<%- theme.gitalk.owner %>',
admin: <%- JSON.stringify(theme.gitalk.admin) %>,
id: '<%- date(page.date, 'YYYY-MM-DDTHH-mm-ss') %>',
proxy: '<%= theme.gitalk.proxy %>',
distractionFreeMode: false // Facebook-like distraction free mode
});
利用cloudflare worker搭建在线代理
利用CloudFlare Worker创建在线代理,不需要我们有服务器,也不需要搭建Node.js服务,只需要注册一个CloudFlare账号,创建一个Worker,部署一个JS脚本就可以了,简单方便,下面我们就来看看如何创建吧。
首先你需要一个 CloudFlare 的账号,如果还没有的话就先注册一个吧:点我注册
选择Workers,创建一个免费的Worker。
自定义一个二级域名,然后创建worker。因为我之前有二级域名,所以这里是修改
进入github项目的 index.js,复制代码。
清除脚本编辑器中的示例代码,将复制的代码粘贴进去。
这里有个点需要注意:我们可以设置请求的黑白名单,这里的白名单我只设置了自己博客域名,大家可以根据自己的情况修改,当然也可以设置为
whitelist = [ ".*" ],这样的话知道你代理地址的人都可以用了,然而免费版本的每天只有10万次请求,如果用的人多了很容易就用完了,所以还是建议大家设置 whitelist。
blacklist = [ ]; // regexp for blacklisted urls
// whitelist = [ ".*" ]; // regexp for whitelisted origins
whitelist = [ "^http.?://www.chenhanpeng.com$", "chenhanpeng.com$" ] //将这里改成你的域名
修改好之后,点击 保存并部署,如果部署正常的话,我们就可以使用我们创建的在线代理了。
从右侧获取到你的worker域名
在上面提到的proxy配置项修改为如下代码:
proxy: https://此处为你复制的的链接/?https://github.com/login/oauth/access_token
重新部署我们的博客,至此,个人在线代理就搭建成功了,博客的评论功能就能正常使用了。
最后
参考博客:https://www.chenhanpeng.com/create-own-cors-anywhere-to-resolve-the-request-with-403/
感谢大佬分享。