16

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

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

4

4 回答 4

14

Github Pages 现在启用了 CORS。

CORS 标头:

Access-Control-Allow-Origin: *

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

于 2016-02-09T19:07:18.723 回答
13

作为一种解决方法,可以使用 JSONP,但由于文件是静态的,而且每个文件都需要一个独特的回调方法,因此仍然有点痛苦。

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

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

于 2013-09-20T18:18:48.897 回答
1

使用 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)
}

于 2014-09-21T09:36:51.260 回答
1

需要注意的事情(对其他人来说可能很明显,但让我绊倒了):

  • 类似的URLhttps://github.com/josephrocca/anime-gan-v2-web/blob/main/anime-gan-v2.onnx?raw=true 没有Access-Control-Allow-Origin: *(即无法从其他站点访问)。如果您右键单击“查看原始”并复制 URL,这是您将获得的 URL。
  • 但该 URL 实际上重定向到https://raw.githubusercontent.com/josephrocca/anime-gan-v2-web/main/anime-gan-v2.onnx,它确实Access-Control-Allow-Origin: *标题(至少截至 2022 年)。

因此,如果将 URL 设置raw.githubusercontent.com.

这并不能直接回答这个问题,但对于那些试图将其 Github 存储库中的内容提供给不同域上的用户的人来说可能很有用。

于 2022-03-05T06:14:36.683 回答