2017-02-16 99 views
1

我有前端Angular JS应用程序,它使用Symfony 3中编写的后端API。我正在使用Symfony HTTP Cache来加速我的某些重要响应。Symfony 3 HTTP Cache和Cross Origin Headers覆盖

我正处于测试阶段,所以我的后端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,增加了CORS头我Symfony3应用程序支持以下错误。

回答

2

尝试在你的配置设置forced_allow_origin_value: *

nelmio_cors: 
    defaults: 
     … 
     forced_allow_origin_value: * 

the configuration docs

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

所以发送Access-Control-Allow-Origin: *,你想要的确切值是从字面上*

+1

非常感谢你! 在配置中添加'forced_allow_origin_value'解决了我的问题。 但是,在此之前,我需要将我的NelmioCors更新到版本1.5,蚂蚁将'*'放在qoutes中。 'forced_allow_origin_value:'*'' –

+0

谢谢!它适用于我,但与报价: 'forced_allow_origin_value:'*'' – Xander