GitHub页面上的跨源资源共享

Max*_*Max 30 github cors github-pages

有没有办法为GitHub页面上托管的静态页面启用跨源资源共享(CORS)以允许Javascript中的跨源请求?

例如,我们可以以某种方式指示GH页面添加这些HTTP响应标头:

Access-Control-Allow-Origin:*  
Access-Control-Allow-Methods:GET,POST
Access-Control-Max-Age: 1000
Access-Control-Allow-Headers:*
Run Code Online (Sandbox Code Playgroud)

在他们的文档中找不到任何内容,这......

... GitHub Pages不支持客户服务器配置文件,如.htaccess或.conf ...

...听起来不是很有希望 - 或者有办法吗?

mon*_*sur 26

编辑:耶!看起来GitHub页面现在支持CORS:https://twitter.com/invisiblecomma/status/575219895308324864

这可以通过卷曲对enable-cors.org(托管在GitHub页面上)的请求来验证.运行此命令:curl -v enable-cors.org > /dev/null返回Access-Control-Allow-Origin: *标头.

虽然我很想看到这个功能,但是没有办法在GitHub页面上支持CORS.我们在GitHub页面上托管http://enable-cors.org,我们无法在网站上启用CORS :)

  • 此时,我没有看到 CORS 标头返回,因此该功能可能已消失。 (3认同)
  • @monsur 看来 GitHub 现在只允许 HTTPS 页面。请相应地更新您的答案。 (3认同)
  • 我提出了功能请求,但老实说这是前一段时间,所以我将再次探讨。David Jacquel在下面提出了一个很好的观点,根据您提供的数据类型,您可以使用纯JS方法,例如JSONP。这将要求您将数据托管为静态文件,但是类似Jekyll的工具可以帮助生成这些文件。 (2认同)
  • 我认为这个答案不再有效。基于此推文:https://twitter.com/invisiblecomma/status/575219895308324864 GitHub工作人员Ben Toews值得信赖,他更新了GitHub页面,以包括一个具有永久响应的开放式CORS标头。如@abbr所述,这可以通过检查来自任何示例Pages存储库的enable-cors.org的响应来容易地验证。也许monsur可以为其他正在寻找的人更新答案...?:-) (2认同)

Vic*_*tor 10

您可以使用CORS代理.
http://cors.io/为我工作.

正常要求:

$.getJSON('https://blockchain.info/stats?format=json',function(data){})
Run Code Online (Sandbox Code Playgroud)

请求代理(只需在网址上添加http://cors.io/)

$.getJSON('http://cors.io/?https://blockchain.info/stats?format=json',function(data){})
Run Code Online (Sandbox Code Playgroud)

更新:API文档已更新,你只需要使用前缀您的网址https://cors.io/?.

  • cors.io 似乎自 2019 年底以来就已经消亡了。如果你在 google 上搜索 CORS 代理,你会发现很多已经存在,但没有一个得到任何专业人士的支持,而且没有一个能够存活得特别久。 (6认同)

小智 5

仅供参考,GitHub Pages 现在似乎支持 CORS(至少在某些情况下)。在这种情况下,带有裸 URL 的自定义域(没有 www 或 github 子域)。这意味着使用 A 记录并避免缓存 CDN。

当我现在转到 enable-cors.org 时,我看到Access-Control-Allow-Origin: *所有资源都返回了标头(来自浏览器开发人员工具的网络选项卡)。在 Chrome 和 Firefox 中。

我在https://isthetubeonstrike.com上使用它从移动 Web 应用程序访问跨域的 JSON 文件。SSL/TLS 是通过 CloudFlare BTW 提供的。