Symfony 3 HTTP缓存和跨源头覆盖

时间:2017-02-16 14:10:11

标签: angularjs symfony caching cors nelmiocorsbundle

我有一个前端AngularJS应用程序,它使用Symfony 3中编写的后端API。我正在使用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上打开我的前端应用,我会在萤火虫中看到以下错误

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,它为我的Symfony3应用程序添加了CORS头支持。

1 个答案:

答案 0 :(得分:2)

尝试在配置中设置forced_allow_origin_value: *

 nelmio_cors:
    defaults:
        …
        forced_allow_origin_value: *

the configuration docs

  

默认情况下,Access-Control-Allow-Origin响应标头值为   Origin请求标头值(如果它符合您的规则)   用allow_origin)定义,因此对于大多数使用它应该没问题   案例。如果不是,您可以通过设置来覆盖此行为   使用forced_allow_origin_value确切的值。

因此,要发送Access-Control-Allow-Origin: *,您想要的确切值就是*