有没有办法在 Github 页面上启用 CORS?

Posted

技术标签:

【中文标题】有没有办法在 Github 页面上启用 CORS?【英文标题】:Is there a way to enable CORS on Github pages? 【发布时间】:2013-09-26 05:29:41 【问题描述】:

我在 Github 页面上托管了一些 JSON 文件,但我无法使用 $.getJSON 检索它们,除非它们来自完全相同的域。

有没有办法为 Github 页面启用 CORS?

【问题讨论】:

【参考方案1】:

Github Pages 现在启用了 CORS。

CORS 标头:

Access-Control-Allow-Origin: *

默认添加到来自 Github 页面的所有响应中!

【讨论】:

你知道这个变化是什么时候发生的吗? 这不再起作用,由于某种原因 GitHub Pages 不再发送 CORS 标头。【参考方案2】:

API 可以,但有限制...

“对于使用基本身份验证或 OAuth 的请求,您每小时最多可以发出 5,000 个请求。对于未经身份验证的请求,速率限制允许您每小时最多发出 60 个请求。未经身份验证的请求与您的 IP 地址相关联,并且而不是发出请求的用户。”

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.github.com/repos/jimmywarting/diezyweb/contents/index.html?ref=gh-pages');
xhr.setRequestHeader("Accept", "application/vnd.github.3.raw");
xhr.send();

xhr.onload = function(e)
   alert(xhr.response)

【讨论】:

在这个问题中,我专门询问的是 Github Pages 而不是一般的 Github API,但谢谢! 也想知道...但这里有一个提示:您可以使用 ref 参数更改分支 master/gh-pages/etc 是的,但据我所知,您仍然不能为托管在 Github Pages 上的内容启用 CORS。因此,例如 somerepo.github.io/data.json 上的任何东西都将无法访问。使用 Github API “有效”,但这只是另一种解决方法,而不是解决方案。【参考方案3】:

作为一种解决方法,可以使用 JSONP,但仍然有点麻烦,因为文件是静态的,并且每个文件都需要一个唯一的回调方法。

另一种选择是将文件存储在 Gists 中并使用与 CORS 配合使用的 Github API。

第三种可能性是不将文件存储在 Github 页面上,而是将它们托管在启用了 CORS 的 S3/Cloudfront 发行版上。

【讨论】:

以上是关于有没有办法在 Github 页面上启用 CORS?的主要内容,如果未能解决你的问题,请参考以下文章

在 Domino 9.0.1 FP 10 中启用/配置 CORS

在 ASP.NET 核心 MVC 项目上启用 CORS

使用Azure功能启用CORS通配符子域

protractor - 启动 chrome 以禁用 cors 的网络安全

在哪里启用cors?

如何在 ASP.net Core WebAPI 中启用 CORS