2014-10-17 8 views
23

Gibt es eine Möglichkeit, Cross-Origin Resource Sharing (CORS) für eine statische Seite unter GitHub Pages zu ermöglichen, um Cross-Origin-Anfragen in Javascript zu ermöglichen?Cross-Origin Resource Sharing auf GitHub Pages

Zum Beispiel können wir anweisen GH Seiten irgendwie diese HTTP-Antwort-Header hinzuzufügen:

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

nichts in ihren documentation finden konnte, und dies ...

... GitHub Pages nicht Kundenserver-Konfigurationsdateien wie .htaccess oder conf ...

unterstützen ... sou nicht Viel versprechend - oder gibt es einen Weg?

Antwort

20

EDIT: Yay! Sieht so aus, als ob GitHub Pages jetzt CORS unterstützt: https://twitter.com/invisiblecomma/status/575219895308324864

Dies kann verifiziert werden, indem eine Anfrage an enable-cors.org (die auf GitHub Pages gehostet wird) gelockt wird. Ausführen dieses Befehls: curl -v enable-cors.org > /dev/null gibt einen Header zurück.

Es gibt keine Möglichkeit, CORS auf GitHub Pages zu unterstützen, obwohl ich diese Funktion gerne sehen würde. Wir hosten http://enable-cors.org auf GitHub Pages, und wir können nicht CORS auf der Website ermöglichen, sich :)

+0

Dank! Haben Sie sich mit GitHub in Verbindung gesetzt oder wissen Sie, ob sie Pläne dazu haben? – Max

+1

Ich habe eine Feature-Anfrage eingereicht, aber ehrlich gesagt, das war vor einer Weile, also werde ich wieder herum graben. David Jacquel macht unten einen guten Punkt, indem Sie abhängig von der Art der Daten, die Sie bedienen, eine reine JS-Methode wie JSONP verwenden können. Dies würde erfordern, dass Sie Ihre Daten als statische Dateien hosten, aber Tools wie Jekyll könnten helfen, diese Dateien zu generieren. – monsur

+1

Jetzt ist es, einschließlich http://enable-cors.org. – abbr

1

Sie CORS auf Github-Seite mit JavaScript-Bibliotheken wie https://github.com/jpillora/xdomain

+0

Sehr interessant! Leider benötigt es eine Proxy-Datei auf der Empfangsseite der Cross-Origin-Anfrage (die Sie hinzufügen können, wenn Sie die Kontrolle darüber haben, oder wenn es sich um einen Dateiserver wie Amazon/Dropbox handelt). Es funktioniert jedoch nicht, wenn Sie mit einer Drittanbieter-API ohne JSONP-Unterstützung sprechen. – Max

4

FYI emulieren kann es sieht aus wie jetzt GitHub Pages CORS unterstützen (zumindest in manchen Situationen). In diesem Fall benutzerdefinierte Domains mit blanken URLs (keine www- oder github-Subdomain). Dies bedeutet, einen A-Eintrag zu verwenden und deren Caching-CDN zu vermeiden.

Wenn ich gehen zu aktivieren-cors.org jetzt sehe ich die Header auf allen Ressourcen zurückgegeben (von der Registerkarte Netzwerk der Browser-Entwickler-Tools). In Chrome und Firefox.

Ich benutze dies bei https://isthetubeonstrike.com für den Zugriff auf eine JSON-Datei Cross-Domain von einem mobile web app. Das SSL/TLS wird über CloudFlare BTW bereitgestellt.

3

Sie können einen CORS-Proxy verwenden.
http://cors.io/ arbeitete für mich.

Normale Anfrage:

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

Anfrage mit Proxy (nur prepend http://cors.io/?u= auf der URL)

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