2014-10-17 19 views
23

Esiste un modo per abilitare la condivisione delle risorse tra origini (CORS) per una pagina statica ospitata su GitHub Pages per consentire richieste di origine incrociata in Javascript?Condivisione di risorse incrociate su pagine GitHub

Per esempio, possiamo istruire GH Pagine in qualche modo per aggiungere queste intestazioni di risposta HTTP:

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

non ho trovato nulla nella loro documentation, e questo ...

... GitHub Pages non supporta i file di configurazione del server del cliente quali .htaccess o .conf ...

... non sou e molto promettente - o c'è un modo?

risposta

20

MODIFICA: Yay! Sembra che GitHub Pages ora supporti CORS: https://twitter.com/invisiblecomma/status/575219895308324864

Ciò può essere verificato arricciando una richiesta su enable-cors.org (che è ospitata su GitHub Pages). Esecuzione di questo comando: curl -v enable-cors.org > /dev/null restituisce un'intestazione Access-Control-Allow-Origin: *.

Non c'è modo di supportare CORS su GitHub Pages, anche se mi piacerebbe vedere questa funzionalità. Ospitiamo http://enable-cors.org su GitHub pagine, e non siamo in grado di abilitare CORS sul sito stesso :)

+0

Grazie! Hai contattato GitHub o ti capita di sapere se hanno qualche piano per questo? – Max

+1

Ho archiviato una richiesta di funzione, ma onestamente questo era un po 'di tempo fa, quindi tornerò a cercare di nuovo. David Jacquel ha un buon punto sotto, in quanto a seconda del tipo di dati che stai servendo, potresti usare un metodo JS puro, come JSONP. Ciò richiederebbe l'hosting dei dati come file statici, ma strumenti come Jekyll potrebbero aiutare a generare questi file. – monsur

+1

Ora lo fa, incluso http://enable-cors.org. – abbr

1

È possibile emulare CORS a pagina Github con librerie javascript come https://github.com/jpillora/xdomain

+0

Molto interessante! Sfortunatamente, richiede un file proxy sul lato ricevente della richiesta di origine incrociata (che è possibile aggiungere se si ha il controllo su di esso, o se si tratta di un file server come Amazon/Dropbox). Non funzionerà per parlare con un'API di terze parti senza il supporto JSONP. – Max

4

FYI sembra Pagine GitHub ora supportano CORS (almeno in alcune situazioni). In questo caso domini personalizzati con URL nudi (nessun dominio secondario www o github). Ciò significa utilizzare un record A ed evitare il loro CDN di memorizzazione nella cache.

Quando vado su enable-cors.org ora vedo l'intestazione Access-Control-Allow-Origin: * restituita su tutte le risorse (dalla scheda di rete degli strumenti di sviluppo del browser). In entrambi Chrome e Firefox.

Io lo uso a https://isthetubeonstrike.com per accedere a un dominio incrociato di file JSON da un mobile web app. SSL/TLS viene fornito passando attraverso CloudFlare BTW.

3

È possibile utilizzare un proxy CORS.
http://cors.io/ ha funzionato per me.

richiesta normale:

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

richiesta con proxy (solo anteporre http://cors.io/?u= sull'URL)

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