2014-10-17 72 views
23

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

例如,我们可以指示GH网页不知何故添加这些HTTP响应头:

Access-Control-Allow-Origin:* 
Access-Control-Allow-Methods:GET,POST 
Access-Control-Max-Age: 1000 
Access-Control-Allow-Headers:* 

无法在他们documentation发现了什么,这......

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

...不会nd非常有希望 - 或者有办法吗?

回答

20

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

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

虽然我很想看到这个功能,但没有办法在GitHub Pages上支持CORS。我们在GitHub上的页面主机 http://enable-cors.org,我们不能让网站本身:)上CORS

+0

谢谢!你有没有联系过GitHub,或者你是否知道他们有没有计划? – Max 2014-10-17 11:01:30

+1

我提交了一个功能请求,但说实话,这是前一阵子,所以我会再次挖掘。 David Jacquel在下面说明了一点,因为根据您所服务的数据类型,您可以使用纯JS方法,例如JSONP。这需要您将数据作为静态文件托管,但像Jekyll这样的工具可以帮助生成这些文件。 – monsur 2014-10-17 13:47:06

+1

现在,它包括http://enable-cors.org。 – abbr 2016-03-24 16:28:45

1

可以效仿Github的页面上CORS与JavaScript库像https://github.com/jpillora/xdomain

+0

非常有趣!不幸的是,它需要一个代理文件在交叉源请求的接收端(如果你有控制权,或者它是像Amazon/Dropbox这样的文件服务器,你可以添加它)。它不适用于与第三方API交谈但不支持JSONP。 – Max 2014-10-17 16:12:58

4

FYI它看起来像GitHub的页面现在支持CORS (至少在某些情况下)。在这种情况下,带有裸露网址的自定义域(无www或github子域)。这意味着使用A记录并避免它们的缓存CDN。

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

我使用这个在https://isthetubeonstrike.commobile web app访问JSON文件跨域。 SSL/TLS是通过CloudFlare BTW提供的。

3

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

正常请求:

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

请求与代理(只是在前面加上http://cors.io/?u=的URL)

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