Sto tentando di fornire una risposta al metodo HTTP OPTIONS con un'intestazione Access-Control-Allow-Origin che copia i contenuti dell'intestazione Origin nella richiesta.L'intestazione Access-Control-Allow-Origin non funziona - Che cosa sto facendo male?
Questo apparentemente non funziona, per ragioni che non riesco a capire.
tl; dr: risposta da OPZIONI dice:
Access-Control-Allow-Origin: http://10.0.0.105:9294
successiva GET ha:
Origin:http://10.0.0.105:9294
Chrome dice:
Origin http://10.0.0.105:9294 is not allowed by Access-Control-Allow-Origin
non WTF?
dettaglio in più ...
Osservando nella finestra di strumenti per sviluppatori di Chrome, le intestazioni di richiesta sono:
OPTIONS /user/kris HTTP/1.1
Host: 10.0.0.104:8080
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://10.0.0.105:9294
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.75 Safari/537.1
Access-Control-Request-Headers: origin, x-requested-with, content-type, accept
Accept: */*
Referer: http://10.0.0.105:9294/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Le intestazioni di risposta sono:
HTTP/1.0 200 OK
Date: Mon, 13 Aug 2012 11:23:45 GMT
Server: WSGIServer/0.1 Python/2.7.3
Content-Length: 0
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD, OPTIONS
Access-Control-Max-Age: 10
Access-Control-Allow-Origin: http://10.0.0.105:9294
Access-Control-Allow-Headers: X-Requested-With, Authorization, X-Huzu-User, Content-Type, Accept
Content-Type: text/html; charset=UTF-8
Dopo jQuery invia la sua OPTIONS richiede e ottiene la risposta di cui sopra, 2 cose strane accadono. La risposta OPTIONS (che è un 200) si presenta nella console sviluppatore come un errore:
OPTIONS http://10.0.0.104:8080/user/kris 200 (OK)
Dopo che una richiesta GET viene rifiutata. Errore nella console:
XMLHttpRequest cannot load http://10.0.0.104:8080/user/kris. Origin http://10.0.0.105:9294 is not allowed by Access-Control-Allow-Origin.
Non riesco a vedere perché no. Che cosa sto facendo di sbagliato?
Non ho un minimo errore nel codice jQuery che sarebbe utile per postare qui. Supponiamo che non ci sia nulla di strano nel codice javascript, cioè è solo un singolo jQuery get(), risultante nella richiesta OPTIONS pubblicata sopra. La mia domanda è: cosa c'è di sbagliato nella risposta? – scav
Sono solo io o c'è una differenza tra l'url dell'host (10.0.0.104:8080) e l'URL di riferimento (10.0.0.105:9294/)? – rene
@rene sì. Il mio server è un'app wsgi Python in esecuzione sul mio computer locale (10.0.0.104:8080) e il test cross-site sta accadendo da una pagina che sto caricando da 10.0.0.105:9294.Non so quale effetto ha il referente sul controllo degli accessi. Pensi che sia rilevante? Se sì, cosa devo fare con questo? – scav