有没有办法为 GitHub Pages 上托管的静态页面启用跨域资源共享 (CORS),以允许 Javascript 中的跨域请求?
例如,我们能否以某种方式指示 GH Pages 添加这些 HTTP 响应标头:
Access-Control-Allow-Origin:*
Access-Control-Allow-Methods:GET,POST
Access-Control-Max-Age: 1000
Access-Control-Allow-Headers:*
在他们的文档中找不到任何内容,而这个...
...GitHub Pages 不支持客户服务器配置文件 例如 .htaccess 或 .conf...
...听起来不太有希望——或者有办法吗?
编辑:耶!看起来 GitHub Pages 现在支持 CORS:https://twitter.com/invisiblecomma/status/575219895308324864
这可以通过向enable-cors.org(托管在GitHub Pages上)发出请求来验证。运行此命令:
curl -v enable-cors.org > /dev/null
返回 Access-Control-Allow-Origin: *
标头。
GitHub Pages 上无法支持 CORS,尽管我很想看到此功能。我们在 GitHub Pages 上托管 http://enable-cors.org,但我们无法在网站本身上启用 CORS :)
正如 @Styx 所指出的,GitHub 页面现在始终重定向到 HTTPS。因此,如果您想亲自确认是否允许所有来源,对于使用 GitHub 页面的特定站点,请尝试使用
curl
和 -L
(遵循所涉及的重定向)。例如:
$ curl -vL square.github.io/okhttp 2>&1 | fgrep -i access-control-allow-origin
您可以使用 CORS 代理。
http://cors.io/为我工作。
正常请求:
$.getJSON('https://blockchain.info/stats?format=json',function(data){})
使用代理请求(只需在 url 前面添加 http://cors.io/?)
$.getJSON('http://cors.io/?https://blockchain.info/stats?format=json',function(data){})
更新: API 文档已更新,您只需在网址前加上
https://cors.io/?
即可。
仅供参考,看起来 GitHub Pages 现在支持 CORS(至少在某些情况下)。在这种情况下,带有裸 URL 的自定义域(没有 www 或 github 子域)。这意味着使用 A 记录并避免缓存 CDN。
当我现在访问enable-cors.org 时,我会看到所有资源上都返回了
Access-Control-Allow-Origin: *
标头(来自浏览器开发人员工具的网络选项卡)。在 Chrome 和 Firefox 中。
我在 https://isthetubeonstrike.com 使用它从 移动网络应用程序访问跨域的 JSON 文件。 SSL/TLS 是通过 CloudFlare BTW 提供的。
几天前提交支持票证后我得到的结果是,CORS 请求到 GitHub Pages 完全没问题。
从另一个页面获取内容,这就是原始帖子似乎询问的内容,意味着另一个页面的服务器必须设置 CORS 请求,否则它将阻止您的请求。 通常,如果确实需要从站点获取内容,站点会有公共 API 来解决此问题(例如,维基百科的 MediaWiki)。