Une simple demande GET sans en-têtes personnalisés. La réponse est renvoyée comme prévu. Les données du corps sont accessibles, mais pas les en-têtes.
Lorsque j'essaie d'accéder à l'en-tête "etag", les navigateurs déclenchent une exception:
Refus d'obtenir un en-tête dangereux "etag"
Chrome, Safari et Firefox se comportent tous de la même manière. Je ne l'ai pas testé sur IE.
Qu'est-ce que j'oublie ici?
Seuls les en-têtes de réponse simples sont exposés lors de l'utilisation de CORS. Des en-têtes de réponse simples sont définis ici . ETag
n'est pas un simple en-tête de réponse. Si vous souhaitez exposer des en-têtes non simples, vous devez définir le Access-Control-Expose-Headers
en-tête, comme ceci:
Access-Control-Expose-Headers: ETag
Cependant, notez que j'ai remarqué des bogues dans Chrome, Safari et Firefox qui empêchent les en-têtes non simples d'être correctement exposés. Cela peut être corrigé maintenant, je ne suis pas sûr.
Vous ne devriez pas avoir besoin de faire une demande de contrôle en amont, car le contrôle en amont n'est requis que pour les méthodes http non GET/POST ou non simples request en-têtes (et vous demandez à propos de response en-têtes).
Avez-vous déjà essayé AJAX 2.0 (partage de domaine croisé) est une méthodologie assez récemment mise en avant par le W3C: http://www.w3.org/TR/XMLHttpRequest2/#ref -cors
Il y a aussi une autre façon de faire cela, qui s'appelle JSON-P, c'est comme une requête JSON, mais vous pouvez l'utiliser pour des domaines croisés: http://en.wikipedia.org/wiki/JSONP
Les deux peuvent être très dangereux pour les propriétaires du site s'ils ne sont pas configurés correctement. Soyez donc prudent lorsque vous l'utilisez.
[PS] Je ne sais pas si cela vous aidera: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html