В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin» - PullRequest
0 голосов
/ 09 июля 2019

Я работаю над API Rest с Symfony и React в качестве "каркаса" внешнего интерфейса.

При попытке подключиться к URL-адресу с почтальоном для запроса GET, например http://example.com/api/headers itработает отлично.Но когда я пытаюсь соединиться с React App http://localhost:3000,, я получаю это сообщение об ошибке: "localhost /: 1 Доступ к XMLHttpRequest в" http://example.com/api/headers' из источника "http://localhost:3000’ заблокированПолитика CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». ".

Я указываю, что я использую ODM MongoDB вместо ORM.

Так чтоКажется, что все должно управляться с NelmioCorsBundle (https://github.com/nelmio/NelmioCorsBundle).

Я установил Bundle, сделал все, что я должен был сделать в соответствии с документацией. Я попробовал различные конфигурации в config / nelmio_cors.yaml, я нашелна форумах. Я также обнаружил эту проблему с Github (https://github.com/nelmio/NelmioCorsBundle/issues/68), объясняющую, что проблема может быть решена путем очистки кэша. Поэтому я попробовал php bin / console clear: cache (в обеих средах dev + prod), но это неничего не изменилось.

Это мой текущий файл nelmio_cors.yaml:

nelmio_cors:
    defaults:
        allow_credentials: true
        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:
        '^/api/': ~

И это мой файл .env:

CORS_ALLOW_ORIGIN=^https?://localhost(:[0-9]+)?$

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

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

проверьте эту ветку, созданную мной, где я столкнулся с подобной проблемой!

Symfony 4.1 - проблема с CORS

Я сам ответил на вопрос и думаю,это должно помочь вам.Позвольте дать некоторую информацию:

  1. Удалить NelmioCorsBundle.
  2. Добавить поддержку CORS напрямую через Apashe!(это то, где я не могу вам помочь, так как я использовал nginx)
  3. Наслаждайтесь поддержкой CORS;)

РЕДАКТИРОВАТЬ: Найдено это https://enable -cors.org /server_apache.html это может помочь вам и кажется довольно простым

Надеюсь, это поможет

0 голосов
/ 09 июля 2019

Другой способ, который заключается в добавлении Access-Control-Allow-Origin, когда PHP работает до отправки любого ответа HTTP. Для этого просто добавьте header("Access-Control-Allow-Origin: localhost:3000"); (разрешить только localhost: 3000) или header("Access-Control-Allow-Origin: *"); (разрешить все) в начале вашего кода.

Дополнительная информация: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

...