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

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

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

【问题讨论】:

    标签: jsonp cors github-pages


    【解决方案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 发行版上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多