La SCRO Access-Control-Allow-Origin en dépit de corriger les en-têtes

Je suis en train de mettre en place simple Cross-Origin Resource sharing à l'aide de jQuery (1.7.1) alimenté ajax sur le client et apache servi python (django) du serveur. Selon toutes les instructions que j'ai lu mon les en-têtes sont correctement réglés, mais je reçois l'erreur suivante:

XMLHttpRequest ne peut pas charger http://myexternaldomain.com/get_data.
Origine http://localhost:8080 n'est pas autorisé par
Access-Control-Allow-Origin.

L'en-tête, je suis en train de (je ne suis pas sûr que c'est de même d'avoir passé le navigateur) envoyer est:

Request URL:http://myexternaldomain.com/get_data
Accept:application/json, text/javascript, */*; q=0.01
Origin:http://localhost:8080
Referer:http://localhost:8080/static/js/test-zetta.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11

Le code javascript est

    var request = $.ajax({
        url : "http://myexternaldomain.com/get_data",
        type : "POST",
        dataType : "json",
        crossDomain : true
    });

Noter que origin est correctement définie. Le serveur ajoute l'en-tête Access-Control-Allow-Origin = * en utilisant le code python suivant

def process_response(self, response):
    if response.has_header('Access-Control-Allow-Origin'):
            return response

    response['Access-Control-Allow-Origin'] = '*'
    return response

def get_orders(request):
    """ Tell worker what to do """
    response_data = {}
    response_data['action'] = 'probe'
    response = process_response(HttpResponse(json.dumps(response_data), mimetype="application/json"))
    return response

Si je visite l'adresse directement, il apparaît pour confirmer que l'en-tête est réglé correctement

Access-Control-Allow-Origin:*
Content-Type:application/json
Date:Thu, 08 Mar 2012 05:06:25 GMT
Server:Apache/2.2.20 (Ubuntu)
Transfer-Encoding:chunked

Cependant, dans la croix paramètre de domaine, il échoue toujours (essayé chrome et firefox). J'ai essayé de mettre en œuvre le code exactement comme pour la réponse sélectionnée à cette question, mais obtenir la même erreur

Mise à jour

Je suis tout à fait sûr que le problème est côté serveur, comme j'ai réussi à obtenir mes appels ajax de travail avec un public différent de la SCRO serveur activée. Quand je compare les en-têtes de retour à partir de ce serveur public, et ceux retournés de la mienne (quand je l'ai tester à partir d'un même domaine), je ne vois aucune différence majeure qui pourrait rendre compte de la différence (voir ci-dessous).

Une subtilité que j'ai exclus, ce qui peut ou peut être important, c'est que le domaine est une amazone domaine de plusieurs sous-domaines. Le adresse réelle est http://ec2-23-20-27-108.compute-1.amazonaws.com/get_orders , n'hésitez pas à le sonder pour voir ce que je fais de mal.

De serveur Public

Access-Control-Allow-Origin:*
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:622
Content-Type:text/html
Date:Thu, 08 Mar 2012 15:33:20 GMT
Keep-Alive:timeout=15, max=99
Server:Apache/2.2.14 (Ubuntu)
Vary:Accept-Encoding
X-Powered-By:Perl/5.8.7, PHP/4.4.0

De mon serveur (pas de travail de la croix-domaine)

Access-Control-Allow-Origin:*
Content-Encoding:gzip
Content-Type:text/plain
Date:Thu, 08 Mar 2012 15:32:24 GMT
Server:Apache/2.2.20 (Ubuntu)
Transfer-Encoding:chunked
Vary:Accept-Encoding
  • J'ai essayé, dans le passé, l'activation de la SCRO pour les données Json et n'a jamais été couronnée de succès. La SCRO peut être feuilletée comme ça. Vous seriez beaucoup mieux juste retour JSON-P.
  • Vous êtes seulement à l'affichage des en-têtes de l'échange final entre votre serveur et le client local. Si vous regardez l'échange complet, je suis sûr que vous verrez une des OPTIONS de demande avec une réponse qui contient Access-Control-Allow-Méthodes et Access-Control-Allow-en-Têtes de têtes de.
InformationsquelleAutor zenna | 2012-03-08