GitHub页面上的跨源资源共享

GitHub页面上的跨源资源共享,github,cors,github-pages,Github,Cors,Github Pages,是否有一种方法可以为托管在上的静态页面启用跨源资源共享(CORS),以允许Javascript中的跨源请求 例如,我们是否可以指示GH页面以某种方式添加这些HTTP响应头: Access-Control-Allow-Origin:* Access-Control-Allow-Methods:GET,POST Access-Control-Max-Age: 1000 Access-Control-Allow-Headers:* 在他们的文件中找不到任何东西,而这个 …GitHub页面不支持客

是否有一种方法可以为托管在上的静态页面启用跨源资源共享(CORS),以允许Javascript中的跨源请求

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

Access-Control-Allow-Origin:*  
Access-Control-Allow-Methods:GET,POST
Access-Control-Max-Age: 1000
Access-Control-Allow-Headers:*
在他们的文件中找不到任何东西,而这个

…GitHub页面不支持客户服务器配置文件 例如.htaccess或.conf


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

编辑:耶!看起来GitHub页面现在支持CORS:

这可以通过将请求卷曲到enable-cors.org(托管在GitHub页面上)来验证。运行此命令:
curl-v enable-cors.org>/dev/null
返回一个
访问控制允许原点:
标题

没有办法在GitHub页面上支持CORS,尽管我很想看到这个特性。我们在GitHub页面上托管,无法在站点本身上启用CORS:)


更新 正如@Styx GitHub所指出的,页面现在总是重定向到HTTPS。因此,如果您想自己确认,对于使用GitHub页面的特定站点,允许使用所有源代码,请尝试使用
-L
(遵循所涉及的重定向)。例如:


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

现在,当我转到enable-cors.org时,我看到在所有资源上返回的
访问控制允许源代码:
标题(来自浏览器开发人员工具的网络选项卡)。在Chrome和Firefox中


我使用这个at从一个服务器跨域访问JSON文件。SSL/TLS是通过CloudFlare提供的。

您可以使用CORS代理。
为我工作

正常请求:

$.getJSON('https://blockchain.info/stats?format=json',function(data){})
使用代理请求(只需在url上添加


更新:已更新,您只需在url前面加上
https://cors.io/?

我从几天前提交的支持通知单中得到的是,CORS对GitHub页面的请求非常好


从另一个页面获取内容,这是原始帖子似乎要问的,这意味着另一个页面的服务器必须设置CORS请求,否则它将阻止您的请求。通常,如果确实需要从站点获取内容(例如,维基百科的MediaWiki),站点会有公共API来解决此问题。

在我的例子中,我使用的是自定义域,但在部署时忘了添加域(ng deploy--base href)。检查开发工具中的“网络”选项卡,观察URL以检查它是否生成了预期的URL。

谢谢!你联系过GitHub吗,或者你碰巧知道他们对此有什么计划吗?我提交了一个功能请求,但老实说,这是很久以前的事了,所以我会再仔细研究一下。DavidJacquel在下面提出了一个很好的观点,根据您所服务的数据类型,您可以使用纯JS方法,例如JSONP。这将要求您将数据作为静态文件托管,但像Jekyll这样的工具可以帮助生成这些文件。我认为这个答案不再有效。根据这条推文:GitHub的工作人员Ben Toews被认为是更新GitHub页面的功臣,以包括一个开放的CORS标题和一个永久的响应。如@abbr所述,通过检查来自enable-cors.org的任何示例页面repos的响应,可以很容易地验证这一点。也许monsur可以更新其他人的答案…?:-)在这一点上,我没有看到返回CORS头,因此该功能可能已经消失。@先生,GitHub现在似乎只允许HTTPS页面使用它。请相应地更新您的答案。它只是
http://cors.io/?https://blockchain.info/stats?format=json
现在(
http://cors.io/?
-前缀)cors.io似乎从2019年末就已经死了。如果你在谷歌上搜索CORS代理,你会发现很多代理已经存在,但没有一个得到任何专业人士的支持,也没有一个能够存活很长时间。
$.getJSON('https://blockchain.info/stats?format=json',function(data){})
$.getJSON('http://cors.io/?https://blockchain.info/stats?format=json',function(data){})