GitHub页面上的跨源资源共享

时间:2014-10-17 01:55:08

标签: github cors github-pages

是否有办法为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:*

documentation找不到任何内容,而这......

  

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

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

6 个答案:

答案 0 :(得分:25)

编辑:耶!看起来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:)

答案 1 :(得分:9)

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

正常请求:

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

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

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

更新 API doc已更新,您只需在网址前加上https://cors.io/?

答案 2 :(得分:4)

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

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

我在https://isthetubeonstrike.com使用此功能从mobile web app访问JSON文件跨域。通过CloudFlare BTW提供SSL / TLS。

答案 3 :(得分:1)

您可以使用https://github.com/jpillora/xdomain

等javascript库在Github页面上模拟CORS

答案 4 :(得分:0)

几天前我收到支持票后得到的是,CORS请求 到GitHub Pages很好。

从另一个页面 获取内容,这就是原始帖子所要询问的内容,这意味着另一个页面的服务器必须设置CORS请求,否则它将阻止您的请求。通常,如果确实需要从站点获取内容(例如MediaWiki for Wikipedia),则站点具有公共API可以解决此问题。

答案 5 :(得分:0)

就我而言,我使用的是自定义域,但是在部署时忘记添加域(ng deploy --base-href https://customdomain.com/)。在dev-tools中检查“网络”标签,并观察URL以检查它是否正在生成预期的URL。