Bonjour,
Je m’énerve prodigieusement sur la mise à jour d’un de mes sites. En l’occurrence un site de cuisine mais on s’en moque dans cette histoire. Bref. Je refais tout un site en utilisant Symfony 7, Api Platform, Nelmio Cors Bundle, et tout ce qu’il faut pour faire un joli site. Il fonctionne parfaitement en local, pas la moindre alerte, avertissement, ou erreur, que ce soit en mode dev ou mode prod. Mais, arrivé sur le serveur de mon fournisseur, toutes les requêtes, que ce soit vers l’api pour aller chercher les infos à afficher (via Vue, Axios et tout cet écosystème JS), ou les urls en "dur" comme login/logout ou /admin me sont renvoyées avec un code 404 :
"Blocage d’une requête multi-origines : la politique same origin ne permet pas de consulter la ressource distante située sur "www.mondomaine.fr". Raison : l’en-tête CORS "Access Control Allow Origin" est manquant.
J’avoue très sincèrement que je n’y connais presque rien en serveurs, pas plus qu’en header. Parmi tout ce qu’il y a à connaitre pour faire un site, j’avoue avoir passé peu de temps sur ces sujets et que…ben…ils ne m’intéressent pas plus que ça. Honte sur moi.
J’ai essayé tout un tas de configurations différentes dans le fichier yaml de config du bundle Nelmio, sans aucun changement. Ca prend un temps fou de vider le cache à chaque fois ^^.
J’ai également essayé cette solution sur Github, sans plus de résultat.
On m’a également dit de tester
curl -I -X OPTIONS https://www.mybeautifulsymfonysite.fr/api/tags?isTheStar=true
//qui pour info donne ceci:
HTTP/1.1 200 OK
date: Tue, 26 Nov 2024 08:49:35 GMT
server: Apache
allow: GET,POST,OPTIONS,HEAD
vary: User-Agent
content-length: 0
set-cookie: WEBMO-MNO=11115|Z0WLo|Z0WLo; path=/; HttpOnly; SameSite=Strict
Mais vu que je ne sais pas ce qui est supposé être le bon résultat, ça ne m’avance pas des masses non plus.
Je suis donc coincé, sans aucune idée de la méthode que je pourrais appliquer pour ne serait-ce que progresser dans la compréhension du problème.
Un technicien de mon fournisseur serveur me dit "veuillez noter qu’il est possible de configurer le paramètre Access-Control-Allow-Origin" via un fichier .htaccess : mais là, je me dis que ça me prouve que le serveur n’a pas de paramètre particulier concernant cette histoire et ne réécrit pas les headers ou n’empêche pas NelmioCorsBundle de faire son boulot.
Si quelqu’un pouvait prendre un moment pour m’aiguiller dans la bonne direction, ou ne serait-ce que me donner des pistes à étudier et des méthodes à tester pour finir par comprendre pourquoi j’ai ce problème, j’apprécierais énormément.
Merci.
Pour référence, l’actuelle configuration nelmio yaml:
nelmio_cors:
defaults:
origin_regex: true
allow_origin: [ '*' ]
allow_methods: [ 'GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE' ]
allow_headers: [ '*' ]
expose_headers: [ 'Link' ]
forced_allow_origin_value: ~
skip_same_as_origin: true
max_age: 3600
paths:
'^/api/':
allow_origin: [ '*' ]
allow_headers: [ '*' ]
allow_methods: [ 'GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE' ]
forced_allow_origin_value: ~
max_age: 3600
'^/admin/':
allow_origin: [ '*' ]
allow_headers: [ '*' ]
allow_methods: [ 'GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE' ]
forced_allow_origin_value: ~
max_age: 3600
Edit : je me dis que la réponse CURL au-dessus ne mentionne pas du tout "get options post put patch delete" comme c’est dit dans la configuration du bundle. Sans doute matière à réfléxion : est-ce que ça veut dire que le serveur réécrit tout ou bien que nelmio déconne chez moi ? Vous voyez quelque chose que je pourrais faire pour trancher la question ? En bonus, je suis prêt à tester la méthode .htaccess, mais à quel endroit de mon arborescence ce fichier doit-il être placé ? Public ? WWW ? Ailleurs ?
Bref pardon pour ce pavé et bonne journée.