2017-02-16 7 views
1

Symfony 3으로 작성된 백엔드 API를 사용하는 프론트 엔드 Angular JS 응용 프로그램이 있습니다. Symfony HTTP 캐시를 사용하여 무거운 응답을 빠르게 할 수 있습니다.Symfony 3 HTTP 캐시 및 교차 원본 헤더 덮어 쓰기

테스트 단계에 있으므로 백엔드 API가 모든 응답에 Access-Control-Allow-Headers:"*"을 추가합니다.

그러나 캐시 된 응답에는 문제가 있습니다. 머리글에서 Access-Control-Allow-Headers:"*"Access-Control-Allow-Headers:"example.com"으로 덮어 씁니다. 여기서 example.com은 캐시되기 바로 전에 리소스를 요청한 클라이언트 주소입니다.

그래서, 주소 www.example.com 대신 주소 example.com에 내 프런트 엔드 응용 프로그램을 열면 내가 CORS 헤더 내 Symfony3 응용 프로그램 지원 추가 내가 NelmioCorsBundle을 사용하고있는 불을 지르고

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. 

에 오류가 다음을 참조하십시오.

답변

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

대단히 감사합니다. config에'forced_allow_origin_value'를 추가하면 제 문제가 해결되었습니다. 하지만 그 전에 NelmioCors를 1.5 버전으로 업데이트해야합니다. 개미는'*'를 qoutes에 넣으려고합니다. 'forced_allow_origin_value : '*' ' –

+0

고마워! 그것은 나를 위해 작동하지만 따옴표와 함께 : 'forced_allow_origin_value : '*'' – Xander