Cross domaine de ressources partage GET: « a refusé de se tête dangereux « etag » » de la réponse

StackOverflow https://stackoverflow.com/questions/5822985

Question

Une simple requête GET sans en-tête personnalisés. La réponse est renvoyée comme prévu. Les données dans le corps est accessible, mais pas les en-têtes.

Quand j'essaie d'accéder à l'en-tête "ETAG", les navigateurs soulèvent une exception:

Refus d'obtenir en-tête dangereux "ETAG"

Chrome, Safari et Firefox se comportent tous les mêmes. Je n'ai pas testé sur IE.

Qu'est-ce que je manque ici?

Était-ce utile?

La solution

sont exposés Seuls les en-têtes de réponse simples lors de l'utilisation CORS. têtes de réponse simples sont définis . ETag n'est pas un en-têtes de réponse simples. Si vous souhaitez exposer les en-têtes non-simples, vous devez définir l'en-tête de Access-Control-Expose-Headers, comme suit:

Access-Control-Expose-Headers: ETag

Toutefois, notez que j'ai des bugs remarqués dans Chrome, Safari et Firefox qui empêchent les en-têtes non simples d'être exposé correctement. Cela peut être fixé maintenant, je ne suis pas sûr.

Vous ne devriez pas avoir besoin de faire une demande de contrôle en amont, puisque prévol est uniquement requise pour les méthodes http non-GET / POST ou non-simple, demande en-têtes (et vous PARLONS réponse en-têtes).

Autres conseils

Avez-vous déjà essayé AJAX 2.0 (partage de la Croix de domaine) est une méthodologie assez récemment mise en évidence par le W3C: http://www.w3.org/TR/XMLHttpRequest2/#ref-cors

Il y a aussi une autre façon de le faire, que l'on appelle JSON-P, il est comme une demande de JSON, mais vous pouvez l'utiliser pour les domaines croisés: http://en.wikipedia.org/wiki/JSONP

Les deux peuvent être très dangereux pour les propriétaires du site sinon de configuration correctement si. Alors, soyez prudent lorsque vous l'utilisez.

[PS] Je ne sais pas si cela aide: http://www.w3.org/Protocols/ RFC2616 / RFC2616-sec14.html

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