Symfony Angular В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin»

У меня возникает эта ошибка, когда я отправляю почтовый запрос на 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()));
    }

Я использую прокси, но также и ошибку, а также создаю прослушиватель для установки заголовков в ответ, но также и ошибку.. как решить эту ошибку..

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
1 243
4

Ответы 4

Попробуйте добавить Access-Control-Allow-Origin в массив allow_headers

Добавьте OPTIONS к allow_methods

@allow_methods в angular !!

dev_2019 11.02.2019 13:25

Нет конфигурации nelmio_cors в Symfony. allow_methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']. Ваш браузер выполняет предварительный запрос к вашему API и использует HTTP-глагол OPTIONS.

thomas.drbg 11.02.2019 13:30

Вы пытались разрешить все заголовки? allow_headers: ['*']

thomas.drbg 11.02.2019 13:40

Тогда я не уверен. Очистите кэш Symfony и браузера, попробуйте другой браузер, другой компьютер... Дайте нам знать, когда найдете

thomas.drbg 11.02.2019 13:47

Заголовок «Авторизация» не разрешен вашим сервером. В вашем приложении Symfony вы должны установить заголовок ответа, содержащий:

Access-Control-Allow-Headers : 'Content-Type', 'Authorization'

Проверьте эту ссылку: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers

а как это аппликировать!

dev_2019 11.02.2019 13:28

Вы должны попробовать так: используйте Symfony\Component\HttpFoundation\AcceptHeader; $acceptHeader = AcceptHeader::fromString($request->headers->get('Accept')); Я исправил ту же проблему для Laravel и Angular. Но я понятия не имею о symfony.

Atul 11.02.2019 13:34

Если вы просто хотите играть с пакетами и вам не нужен CORS, вы можете отключить его с помощью этого хром расширение. Рядом с вашими включенными расширениями появится зеленый значок, поэтому вы можете снять флажок Enable cross-origin sharing.

Другие вопросы по теме