L'en-tête Access-Control-Allow-Origin ne fonctionne pas - Qu'est-ce que je fais de mal?
Je tente de fournir une réponse à la HTTP méthode des OPTIONS avec un Access-Control-Allow-Origin-tête de la copie le contenu de l'en-tête d'Origine dans la demande.
Ce n'est apparemment pas de travail, pour des raisons que je ne peux pas comprendre.
tl;dr:
réponse d'OPTIONS dit:
Access-Control-Allow-Origin: http://10.0.0.105:9294
ultérieure a:
Origin:http://10.0.0.105:9294
Chrome dit:
Origin http://10.0.0.105:9294 is not allowed by Access-Control-Allow-Origin
WTF pas?
Plus en détail...
Par la recherche dans google Chrome, développeur d'outils de la fenêtre, les en-têtes de requête sont:
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
Les en-têtes de réponse sont:
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
Après jQuery envoie ses OPTIONS de demande et obtient la réponse ci-dessus, 2 choses bizarres se produisent.
Les OPTIONS de réponse (qui est un 200) s'affiche dans la console développeur comme une erreur:
OPTIONS http://10.0.0.104:8080/user/kris 200 (OK)
L'issue de laquelle une demande est rejetée. Erreur dans la 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.
Je ne vois pas pourquoi pas. Ce que je fais mal?
source d'informationauteur scav
Vous devez vous connecter pour publier un commentaire.
OK, je pense que je l'ai. Il semble que la manipulation adéquate de la préparation du vol des OPTIONS de la demande est nécessaire, mais PAS SUFFISANT cross-site ressource des demandes de travail.
Après la demande d'OPTIONS de revient de manière satisfaisante des en-têtes, toutes les réponses à toutes les demandes ultérieures vers la même URL aussi avoir le nécessaire "Access-Control-Allow-Origin" en-tête, sinon le navigateur va les avaler, et ils ne vont même pas s'afficher dans la fenêtre du débogueur.
Donc il va ressembler le navigateur annulé à la demande en raison d'un problème dans les OPTIONS de réponse, mais en fait, le navigateur est en regardant les en-têtes de réponse de la requête réelle, puis de la rejeter.