특정 URL에 대해 ETag를 제공하는 웹 서버가 있습니다. 브라우저가이 url에 대한 요청을 수행하면 해당 URL에 대한 서버의 이전 응답에 포함 된 ETag 값과 함께 "If-None-Match"라는 http 헤더를 제공합니다. 이제 프로그램 적으로 요청 헤더 "If-Modified-Since"를 추가하고 미래 또는 과거 날짜로 설정하면 (중요하지 않음) 브라우저는 "If-None-Match"-header를 보내는 것을 중지합니다. FireFox와 Chrome에서이 기능을 보았습니다 (다른 브라우저에서는 테스트하지 않았습니다). HTTP/1.1 스펙으로 결론을 내릴 수 없다. 왜 이런 일이 생길까요?If-Modified-Since는 브라우저에서 If-None-Match를 무시합니다.
다음은 시나리오를 재현 할 간단한 코드 예제입니다. 이 코드는 서버가 Etag 헤더로 응답한다고 가정합니다. 내가 프로그래밍 방식 "수정 된 경우 - - 이후"요청 헤더를 추가하고 중 미래 또는 과거의 날짜 (중요하지 않음)로 설정하는 경우
var request = new XMLHttpRequest();
request.open("GET", someUrl, true);
request.onreadystatechange = function(){};
// This statement makes the browser stop sending the "If-None-Match" header
request.setRequestHeader("If-Modified-Since", "Sat, 29 Oct 1994 19:43:31 GMT");
request.send(null);
대신 http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p4-conditional-21.html을 읽어 보시기 바랍니다. –