2014-10-17 85 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){})