2017-02-16 96 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