2016-12-06 13 views
1

나는 각각의 응답에 ETag를 넣는 웹 서비스를 제공하므로 향후 호출은 HTTP 304 (Not Modified) 상태를 사용할 수 있습니다. ETag는 실제로 타임 스탬프와 함께 쿼리 유형의 Base64 인코딩 만 생성합니다.Accept- 언어를 사용하는 ETag

브라우저에서 허용 언어가 다른 동일한 리소스를 요청하면 문제가 발생합니다. 브라우저는 현재 동일한 If-None-Match 헤더를 전송하므로 실제 자원이 다른 언어로 되돌아 왔을지라도 응답은 304입니다. 그래서이 방법은 Vary Header를 추가하여 클라이언트에 응답이 Accept & Accept-Language로 다양 함을 지정하는 것입니다.

비바리 : 수락 - 언어

을 수락하지만 브라우저 (크롬)에 관계없이 수용 언어의 동일한의 ETag를 사용합니다. 여기서 사용하는 올바른 규칙은 무엇입니까?

감사합니다.

답변

0

E-Tag는 응답 내용을 식별합니다. E- 태그 생성을 위해 응답 본문 해시를 사용하는 것이 좋습니다. 적어도 쿼리의 해시와 연결된 언어를 사용할 수 있습니다.

+0

이것은 약간 약해 보입니다. ETag에서 실제 내용을 인코딩 할 수 있지만 클라이언트가 다른 언어 (fr)로 동일한 리소스에 대해 동일한 ETag를 사용하려고하면 간단히 새로운 ETag for fr. 클라이언트가 이제 원래 언어로 다시 동일한 내용을 쿼리하면 해당 ETag가 무시되고 새 ETag가 전달되므로 304를 사용하지 않습니다.이 캐싱 솔루션은 HTTP 헤더가 출력 내용에 영향을 미치는지 클라이언트에게 알려주는이 사용 사례 (VARY)를 해결하는 특정 헤더. – Agent96