Pourquoi Access-Control-Expose-Headers est-il nécessaire?

Je cherchais les raisons de sécurité spécifiques pour lesquelles cela avait été ajouté. C’était un peu un moment WTH quand je mettais en œuvre des cors et pouvais voir tous les en-têtes renvoyés mais je ne pouvais pas y accéder via javascript ..

Le système CORS est mis en œuvre de manière à ne pas enfreindre les hypothèses formulées dans le monde antérieur à la CORS, dans le monde d’origine identique.

Dans le monde pré-CORS, un client pouvait déclencher une requête d’origine croisée (par exemple, via une balise de script), mais il ne pouvait pas lire les en-têtes de réponse.

Afin de garantir que CORS ne rompt pas cette hypothèse, la spécification CORS exige que le serveur accorde des permissions explicites au client pour lire ces en-têtes (via l’en Access-Control-Expose-Headers tête Access-Control-Expose-Headers ). De cette façon, les requêtes CORS non autorisées se comportent comme dans un monde pré-CORS.

C’est une très bonne question. En consultant le site http://www.w3.org/TR/cors/#simple-response-header , vous ne savez pas pourquoi vous souhaitez ou devez le faire.

La spécification CORS prend beaucoup de poids dans l’idée que vous devez avoir une prise de contact préalable à la demande où le client demande un type de connexion et que le serveur répond qu’il l’autorisera. .

Par défaut, la longueur du contenu n’est pas un en-tête autorisé, j’ai donc rencontré le même problème (plus tard, lorsque je devais accéder à WebDAV et que je devais modifier les parameters autorisés). CORS n’a pas vraiment de sens (pour moi ) en premier lieu, cela ne me surprendrait pas si des pans capricieux.