2017-02-16 1 views
1

J'ai l'application frontale Angular JS qui consomme l'API backend écrite dans Symfony 3. J'utilise Symfony HTTP Cache pour accélérer certaines de mes réponses lourdes.Cache HTTP et Cross Origin Headers de Symfony 3 remplacer

Je suis dans la phase de test, donc mon API backend ajoute Access-Control-Allow-Headers:"*" à toutes les réponses.

Mais, il y a un problème avec les réponses qui sont mises en cache. Dans leur en-tête, Access-Control-Allow-Headers:"*" est remplacé par Access-Control-Allow-Headers:"example.com", où example.com est l'adresse du client qui a demandé la ressource juste avant qu'elle ne soit mise en cache.

Donc, si j'ouvre mon application frontend sur l'adresse www.example.com au lieu de l'adresse example.com que je vois l'erreur suivante dans le Firebug

XMLHttpRequest cannot load https://backend.com/tests/all. 
The 'Access-Control-Allow-Origin' header has a value 'http://example.com' 
that is not equal to the supplied origin. 
Origin 'http://www.example.com' is therefore not allowed access. 

J'utilise NelmioCorsBundle qui ajoute des en-têtes CORS soutien à ma demande de Symfony3.

Répondre

2

Essayez le réglage forced_allow_origin_value: * dans votre config:

nelmio_cors: 
    defaults: 
     … 
     forced_allow_origin_value: * 

par the configuration docs:

Par défaut, la valeur d'en-tête de réponse Access-Control-Allow-Origin est la valeur d'en-tête de demande Origin (si elle correspond aux règles que vous » ve défini avec allow_origin), il devrait donc être bien pour la plupart des cas d'utilisation . Si ce n'est pas le cas, vous pouvez remplacer ce comportement en définissant la valeur exacte souhaitée à l'aide de forced_allow_origin_value.

donc d'envoyer Access-Control-Allow-Origin: *, la valeur exacte que vous voulez est littéralement *.

+1

Merci beaucoup! L'ajout de 'forced_allow_origin_value' dans la configuration a résolu mon problème. Mais, avant cela, j'ai besoin de mettre à jour mon NelmioCors vers la version 1.5, et de mettre '*' dans les qoutes. 'forced_allow_origin_value: '*'' –

+0

Merci! Cela fonctionne pour moi, mais avec des guillemets: 'forced_allow_origin_value: '*'' – Xander