Разрешить CORS на Symfony 4 - PullRequest
       14

Разрешить CORS на Symfony 4

0 голосов
/ 06 февраля 2019

Мне недавно потребовалось разрешить CORS, и в процессе поиска решения я нашел nelmio/NelmioCorsBundle.

. Для начала я могу разрешить запрос из любого источника, так что это мой app/config/config.yml:

nelmio_cors:
    defaults:
        allow_credentials: false
        allow_origin: ['*']
        allow_headers: ['*']
        allow_methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']
        max_age: 3600
        origin_regex: false 

Работает только для запросов GET, любой запрос POST возвращает:

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

Мне не обязательно работать с этим пакетом, в начале я попытался раскомментировать TRUSTED_HOSTS и установить его со своим доменом в файле dotenv, но это было бесполезно.Также я не нашел никакой помощи об этом TRUSTED_HOSTS в документации.

Так что любая помощь с этим пакетом или любым другим решением для CORS на Symfony я был бы рад.


Как и просилиЯ обновляю свою текущую конфигурацию nelmiocors:

# app/config/config.yml

# Nelmio CORS Configuration
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']
        expose_headers: ['Link']
        max_age: 3600
    paths:
        '^/':
          origin_regex: true
          allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
          # allow_origin: ['^http://localhost:[0-9]+']
          allow_headers: ['*']
          allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
          # allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
          max_age: 3600
          # hosts: ['^api\.']

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Пример:

nelmio_cors:
defaults:
    origin_regex: true
    allow_origin: ['*']
    allow_methods: ['GET', 'OPTIONS', 'POST', 'PUT', 'PATCH', 'DELETE']
    allow_headers: ['Accept','Authorization','Cache-Control','Content-Type','DNT','If-Modified-Since','Keep-Alive','Origin','User-Agent','X-Requested-With']
    expose_headers: ['Authorization]
    max_age: 3600
paths:
    '^/': ~
0 голосов
/ 07 февраля 2019

Не знаю, что именно было не так, но, как помог один из комментариев (человек, который помог, возможно, удалил свой собственный комментарий).

В итоге я получаю эту конфигурацию в Nelmio CORS:

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:
        '^/': ~

И после этого очистил кеш от cli и вручную, и все заработало.

Мое предположение о том, что я делал неправильно: когда я впервые настроил Nelmio CORS, я не очистилкеш, и, следовательно, он не работал.После этого я попробовал некоторые другие комбинации конфигурации, и они не работали, даже когда я очищал кеш.Это заставляет меня думать, что код должен работать с самого начала, если я не забыл очистить кеш, после этого я использовал неверную конфигурацию и, очевидно, очистил кеш, это не сработало.В общем, это была ошибка новичка.

...