У меня возникает эта ошибка, когда я отправляю почтовый запрос на API symfony4. Я использую fosrestBundle для создания API и nelmioCrosBundle для исправления ошибки cros, но также у меня есть эта ошибка:
Access to XMLHttpRequest at 'http://localhost:8000/api/user/upload' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
конфигурация кода nelmio:
nelmio_cors:
# defaults:
# origin_regex: true
# allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
# allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
# allow_headers: ['Content-Type', 'Authorization']
# max_age: 3600
# paths:
# '^/': ~
paths:
'^/api':
allow_origin: ['*']
allow_headers: ['Authorization', 'Content-Type']
allow_methods: ['GET', 'POST', 'PUT', 'DELETE']
max_age: 3600
и это функция для отправки угловых данных в symfony4:
uploadFiles(test) {
let headers = new Headers({ 'Content-Type': 'application/json',
'Authorization': 'Bearer ' + localStorage.getItem('token') });
console.info(test);
return this._http.post(this.url + '/user/upload',JSON.stringify(test) ,{ headers: headers })
.pipe(map(res => res.json()));
}
Я использую прокси, но также и ошибку, а также создаю прослушиватель для установки заголовков в ответ, но также и ошибку.. как решить эту ошибку..





Попробуйте добавить Access-Control-Allow-Origin в массив allow_headers
Добавьте OPTIONS к allow_methods
Нет конфигурации nelmio_cors в Symfony. allow_methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']. Ваш браузер выполняет предварительный запрос к вашему API и использует HTTP-глагол OPTIONS.
Вы пытались разрешить все заголовки? allow_headers: ['*']
Тогда я не уверен. Очистите кэш Symfony и браузера, попробуйте другой браузер, другой компьютер... Дайте нам знать, когда найдете
Заголовок «Авторизация» не разрешен вашим сервером. В вашем приложении Symfony вы должны установить заголовок ответа, содержащий:
Access-Control-Allow-Headers : 'Content-Type', 'Authorization'
Проверьте эту ссылку: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers
а как это аппликировать!
Вы должны попробовать так: используйте Symfony\Component\HttpFoundation\AcceptHeader; $acceptHeader = AcceptHeader::fromString($request->headers->get('Accept')); Я исправил ту же проблему для Laravel и Angular. Но я понятия не имею о symfony.
Если вы просто хотите играть с пакетами и вам не нужен CORS, вы можете отключить его с помощью этого хром расширение. Рядом с вашими включенными расширениями появится зеленый значок, поэтому вы можете снять флажок Enable cross-origin sharing.
@allow_methods в angular !!