我正在使用自己的个人网站:https://aleksandrhovhannisyan.github.io/
目前,我所有的项目都在HTML中进行了硬编码。这使得难以维护它们。例如,如果一个项目被加了星标,我必须进入并手动更新星数,然后推送一次提交。它可以正常工作,并且从用户体验的角度来看它很快,但是效率很低。
我一直在研究一种备选方案,该方案将根据从GitHub API中获取的数据从存储卡中自动填充网站的项目部分:
https://developer.github.com/v3/repos/
根据顶级API文档(https://developer.github.com/v3/#user-agent-required):
所有API请求都必须包含有效的
User-Agent
标头。没有User-Agent
标头的请求将被拒绝。我们要求您将GitHub用户名或应用程序名称用于User-Agent
标头值。这使我们可以在出现问题时与您联系。
的确是这样。当我在处理脚本并在本地刷新页面时,由于没有设置User-Agent
标头,最终我被禁止了403的错误阻止。
但是有一个问题:当我在Chrome中打开网站时,控制台会显示此错误:
index.js:51拒绝设置不安全的标头“ User-Agent”
我的理解是,这是适当的预防措施,并且应该确实在某种服务器上设置用户代理标头。 Chrome最终确实会加载数据,尽管加载速度比Firefox慢,但Firefox似乎并未对User-Agent
的使用施加任何此类限制。
像我这样的个人网站不是使用GitHub API并设置User-Agent
请求标头的理想选择吗?如果是这样,除了对所有内容进行硬编码之外,我还有什么其他选择?
答案 0 :(得分:0)
似乎问题不仅仅在于设置User-Agent
标头,还在于我正在发出的请求数。
根据GitHub自己的文档:
对于未经身份验证的请求,速率限制允许每小时最多60个请求。未经身份验证的请求与原始IP地址相关联,而不与发出请求的用户相关联。
这对我的最终用户来说无关紧要,因为他们不会(希望)刷新很多次,但是对于测试/开发来说却很重要,因为我经常刷新以查看更改结果(因此用尽了我的可用请求)。我通过发送垃圾邮件并按https://developer.github.com/v3/#rate-limiting运行curl -i https://api.github.com/users/my-username
来检查此问题:
之所以如此之快用完请求,是因为我的JavaScript设计存在缺陷:我对我感兴趣的每个存储库都提出了一个单独的请求。相反,我可能要做的是创建带有URL的字典我有兴趣显示的回购单,然后对我的帐户中的所有公共回购单请求。然后,我可以遍历每个存储库,并检查它是否在要显示的存储库列表中;如果是这样,我将继续为其创建项目卡。这样,我每次刷新只是为了获取回购信息就不会发送6个请求。