2016-11-21 1 views
3

http 응답 헤더 내에서 Access-Control-Max-Age와 Cache-Control의 차이점은 무엇입니까?액세스 제어 - 최대 기간 대 캐시 제어

Access-Control-Max-Age:1728000 
Cache-Control:max-age=21600, public 

나는 종종 동일한 값을 가지고 함께 나타나기도하고 동일한 값을 나타낼 수도없는 느낌을 가지고 있습니다.

이 모두 http 헤더에 표시되지만 다른 값을 포함하는 경우이 값이 유효할까요?

답변

8

http 응답 헤더 내에서 Access-Control-Max-Age와 Cache-Control의 차이점은 무엇입니까?

이 헤더는 서로 다른 상황에서 서로 다른 목적을 위해 사용됩니다

  • Cache-Control는 자원 신선한 간주됩니다 최대 시간을 지정하려면 넓은 일반적인 문맥에서 사용됩니다.

  • Access-Control-Max-AgeCORS preflight requests에서 사용됩니다. 프리 플라이트 요청의 결과가 캐시 될 수있는 기간을 나타냅니다. 이 경우의 결과는 Access-Control-Allow-MethodsAccess-Control-Allow-Headers 헤더의 내용입니다.

즉,이 값들은 다른 것들의 신선도와 관련이 있습니다. Cache-Controlmax-age=은 다운로드 한 리소스 용이며 Access-Control-Max-Age은 다른 헤더 필드의 콘텐츠 용입니다.

나는 종종 동일한 값을 가지고 함께 나타나기도하고 같은 값을 나타낼 수도없는 느낌을 가지고 있습니다.

앞에서 설명한 것처럼 완전히 다른 것을 나타냅니다. 함께 보는 것은 우연 일뿐입니다. 해당하는 경우 일반적으로 Cache-Controlmax-age으로 설정하는 것이 좋습니다. Access-Control-Max-Age 설정은 브라우저가 합리적인 기본값을 설정하기 때문에 매우 중요하지 않습니다.

둘 다 http 헤더 내에 나타나지만 다른 값을 포함한다면이 값이 유효할까요?

이러한 헤더는 관련이 없으므로 이 유효합니다. 그러나 예에서 값 Access-Control-Max-Age: 1728000은 다소 이상합니다. 브라우저는 대개 더 작은 값인 (Firefox는 24 시간 (86400 초), Chromium은 10 분 (600 초))으로 제한하기 때문에 약간 이상합니다. . 또한 Chromium은 기본값 인 5 초를 지정합니다. @Filippos에 의해

부록 :

은 또한 액세스 제어 - 맥스 - 나이 만 사용할 수 있습니다 (의미) 프리 플라이트 요청에, 그 고용의 HTTP 옵션을 확인합니다.동시에 HTTP 사양 (RFC 7231)은 HTTP OPTIONS 요청 ("OPTIONS 메서드에 대한 응답은 캐시 가능하지 않음")에서 캐싱을 허용하지 않으므로 기본적으로 HTTP OPTIONS의 경우 Access Control-Max- 나이

+0

예를 들어, 도메인에서 호스팅되는 일부 상호 도메인 리소스가있을 수 있지만 Access Control 헤더는 문제의 리소스가 아닌 모든 http 응답에 (잘못) 나타납니다. 컨텍스트를 벗어나서 Access Control 헤더가 표준 비공유 리소스에 표시 될 것으로 기대하지 않아서 저를 던졌습니다. 통찰력에 감사드립니다! – Radderz

+0

또한 HTTP 옵션을 사용하는 프리 플라이트 요청에서만 Access-Control-Max-Age를 (의미있게) 사용할 수 있습니다. 동시에 HTTP 사양 (RFC 7231)은 HTTP OPTIONS 요청 ("OPTIONS 메서드에 대한 응답은 캐시 가능하지 않음")에서 캐싱을 허용하지 않으므로 기본적으로 HTTP OPTIONS의 경우 Access Control-Max- 나이. – Filippos

+0

좋은 지적, thanks @Filippos – janos