Недавно мне нужно было разрешить 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\.']
Не знаю, что именно было не так, но как один из комментариев помог (человек, который помог, возможно, удалил свой собственный комментарий).
Я заканчиваю с этой конфигурацией для 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, я не очистил кеш, и, следовательно, он не работал. После этого я попробовал некоторые другие комбинации конфигурации, и они не работали, даже когда я очищал кеш. Это заставляет меня думать, что код должен работать с самого начала, если я не забыл очистить кеш, после этого я использовал неверную конфигурацию и, очевидно, очистил кеш, это не сработало. В общем, это была ошибка новичка.
Пример:
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:
'^/': ~