Question

Je suis en train d'utiliser Cross-Origin Resource Sharing avec Access-Control-Laisser -Origin et en-têtes connexes. Je l'ai travailler sur Firefox, mais Chrome me donne des erreurs d'autorisation, qui ont l'air comme cela:

XMLHttpRequest cannot load <remote>. Origin <local> is not allowed by Access-Control-Allow-Origin.

L'inspecteur réseau indique la demande, mais pas de réponse (et ne comprend pas les options de demande et de réponse) prévol. Je visitai la sortie de demande à l'aide boucle et reproduire tous les en-têtes, et ce que je vois correspond à ce que la spécification implique (et encore, ce qui accepte Firefox). Je suis à une perte comment déboguer cet autre - y at-il des astuces pour voir l'activité de réseau à un niveau inférieur à ce que Chrome fournit normalement? Informations sur la façon dont les demandes Chrome interprète CORS différemment que Firefox?

Était-ce utile?

La solution

Je soupçonne que ce que vous voyez est une prévol suivie d'une demande Chrome qui échouent à cause d'un bogue. Cela expliquerait pourquoi les choses fonctionnent dans Firefox, mais pas dans Chrome.

Êtes-vous d'envoyer des en-têtes personnalisés dans votre demande? Il y a un bug dans WebKit où les requêtes GET avec les en-têtes personnalisés ne fonctionne pas (bug ici: http : //code.google.com/p/chromium/issues/detail id = 57836 )?. Je l'ai aussi remarqué que Chrome attend parfois l'en-tête Content-Type dans la liste de contrôle d'accès-allow-têtes, même si Content-Type est un en-tête simple.

, vous mentionnez également que l'inspecteur du réseau ne comprend pas les options de contrôle en amont? Quelle inspecteur réseau utilisez-vous? Je vous recommande d'utiliser Wireshark, car cela vous donne des détails sur le trafic réseau réel que l'inspecteur de Chrome ne fournit pas (par exemple, Wireshark enregistrera les demandes de contrôle en amont).

D'autres conseils de débogage:

Essayez la demande dans Safari. Cela aidera à réduire à un bug Chrome ou un bug WebKit.

Les fois où je l'ai vu l'erreur que vous voyez (Wireshark montre une demande, mais pas de réponse), il est parce que mon serveur ne comprend pas l'en-tête Access-Control-Allow-Origin, qui ne sont pas inclus parce que Chrome n'envoie pas l'en-tête d'origine (voir bug ci-dessus). Dans votre trace réseau, voyez-vous un en-tête d'origine dans la demande? Avez-vous un contrôle sur le serveur, et si oui, est-il recevoir un en-tête d'origine?

Son difficile à déboguer le problème réel, sans plus de détails. Si vous rencontrez des problèmes encore, pouvez-vous les en-têtes demande post / réponse ici?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top