Перезапись заголовков 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: *, точное значение, которое вы хотите, буквально *,

Другие вопросы по тегам