Me paso hace poco que estaba ocupando el nelmio_cors, en general todo muy bien con las peticiones desde una aplicación en Angular, pero puntualmente con una petición XMLHttpRequest que enviaba archivos a mi API Rest me empezo a mostrar un lindo error en la consola por cors, el error es:
Access to XMLHttpRequest at 'https://localhost:8000/XXXXX.php' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
Y aquí empezaron los problemas, si tengo un bundle que se ocupa de evitar los problemas por cors, porque aqui no funcionaba? la respuesta después de googlear mucho fue bastante simple la verdad, en el archivo nelmio_cors.yaml debes modificar el allow_headers.
Asi esta originalmente (claramente deberia variar un poco por tus rutas):
paths:
'^/rest/':
allow_origin: ['*']
allow_headers: ['Content-Type', 'Authorization']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
'^/':
origin_regex: true
allow_origin: ['^http://localhost:[0-9]+']
allow_headers: ['Content-Type', 'Authorization']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
hosts: ['^rest\.']
Lo unico que debes hacer es agregarle las opciones ‘Accept’, ‘Cache-Control’, ‘Origin’, ‘X-Requested-With’, ‘X-File-Name’ al allow_headers, quedando asi:
paths:
'^/rest/':
allow_origin: ['*']
allow_headers: ['Content-Type', 'Authorization', 'Accept', 'Cache-Control', 'Origin', 'X-Requested-With', 'X-File-Name']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
'^/':
origin_regex: true
allow_origin: ['^http://localhost:[0-9]+']
allow_headers: ['Content-Type', 'Authorization']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
hosts: ['^rest\.']
Con esto el problema se soluciona, cabe mencionar que es un poco extraño este comportamiento, es decir, si una vez aceptada la primera peticion remueves el codigo agregado funciona, pero despues de un rato vuelve a pasar, interesante no? prodria ser un tema de cache, pero al menos con esto ya no deberias tener mas problemas.