Перезапись заголовков Symfony 3 HTTP Cache и Cross Origin
У меня есть внешнее приложение AngularJS, которое использует внутренний API, написанный на Symfony 3. Я использую Symfony HTTP Cache, чтобы ускорить некоторые из моих тяжелых ответов.
Я нахожусь в стадии тестирования, поэтому мой бэкэнд API добавляет Access-Control-Allow-Headers:"*"
на все ответы.
Но существует проблема с ответами, которые кэшируются. В их заголовке Access-Control-Allow-Headers:"*"
перезаписывается Access-Control-Allow-Headers:"example.com"
, где example.com
адрес клиента, который запросил ресурс непосредственно перед его кэшированием.
Итак, если я открою свое приложение веб-интерфейса по адресу www.example.com
вместо адреса example.com
Я вижу следующую ошибку в firebug
XMLHttpRequest cannot load https://backend.com/tests/all.
The 'Access-Control-Allow-Origin' header has a value 'http://example.com'
that is not equal to the supplied origin.
Origin 'http://www.example.com' is therefore not allowed access.
Я использую NelmioCorsBundle, который добавляет поддержку заголовков CORS в мое приложение Symfony3.
1 ответ
Попробуйте установить forced_allow_origin_value: *
в вашем конфиге:
nelmio_cors:
defaults:
…
forced_allow_origin_value: *
Согласно документации по конфигурации:
По умолчанию
Access-Control-Allow-Origin
значение заголовка ответа являетсяOrigin
значение заголовка запроса (если оно соответствует определенным вами правиламallow_origin
), так что должно быть хорошо для большинства случаев использования. Если это не так, вы можете переопределить это поведение, установив точное значение, которое вы хотите использоватьforced_allow_origin_value
,
Так чтобы отправить Access-Control-Allow-Origin: *
, точное значение, которое вы хотите, буквально *
,