Я использую Nelmio_cors, но я получаю ошибку 500 для запросов POST, хотя я получаю ответ с поддержкой CORS для запросов GET - PullRequest
0 голосов
/ 10 марта 2020

У меня есть API в Symfony 4 с использованием NelmioCorsBundle. У меня есть приложение Vue. js, которое запрашивает тот же API. Я использую Google chrome в качестве браузера.

Когда я отправляю запрос GET Нет проблем, но когда я отправляю POST, я получаю следующий ответ.

Access to XMLHttpRequest at 'https://my_api_domain/api/resource/custom-update' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource

Я понимаю, это говорит мне, что мне нужно установить «Access-Control-Allow-Origin» в заголовках моего ответа. Но для того, что я понимаю, NelmioCorsBundle должен вводить его автоматически.

Пакет объявляется в комплекте. php

return [
  ...
  Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true],
  ...
];

Вот мои настройки для NelmioCorsBundle

nelmio_cors:
    defaults:
        origin_regex: true
        allow_origin: ['*']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['Content-Type', 'Authorization']
        expose_headers: ['Link']
        max_age: 3600
    paths:
        '^/': ~
  • Я уже прочитал документацию для CORS .
  • Я не хочу, чтобы хак заставлял его работать на Chrome или Firefox.
  • Я пытался вручную ввести 'Access-Control-Allow-Origin: *' в моем ответе

Ничего не помогло.

Что я пропустил?

1 Ответ

0 голосов
/ 10 марта 2020

может быть бессмысленным, но хорошо ли вы отформатировали .yml? в том смысле, что для правильной работы файлы .yml должны быть отформатированы следующим образом:

nelmio_cors:
    defaults:
        origin_regex: true
        allow_origin: ['*']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['Content-Type', 'Authorization']
        expose_headers: ['Link']
        max_age: 3600
    paths:
        '^/': ~

В противном случае попробуйте добавить forced_allow_origin_value следующим образом:

nelmio_cors:
    defaults:
        origin_regex: true
        allow_origin: ['*']
        allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
        allow_headers: ['Content-Type', 'Authorization']
        expose_headers: ['Link']
        forced_allow_origin_value: ['*']
        max_age: 3600
    paths:
        '^/': ~
...