Github API와의 통합을 처리하기 위해 OkHttp 라이브러리를 사용하는 Jenkins 플러그인을 사용하고 있습니다.왜 OkHttp는 If-Modified-Since 헤더를 설정할 때 Last-Modified 헤더를 처리하는 것과 동일한 Date 헤더를 취급합니까?
OkHttp가 리소스에 액세스 할 수없는 토큰으로 리소스를 요청하려고하면 Github의/repos/: owner/: repo endpoint가 오류 404를 반환합니다. 토큰의 범위가 리소스에 액세스 할 수 있도록 확장되면 OkHttp는 If-Modified-Since 헤더로 요청을 수행합니다. 헤더의 값은 404 응답의 Date 헤더 값으로 설정됩니다. 이 두 번째 요청의 응답은 HTTP 304입니다. Github의 지원 팀에 따르면 첫 번째 요청이 있던 이후 자원 (/ repos/: 소유자/: repo 끝점 뒤에있는 데이터)이 수정되지 않았기 때문에이 동작이 적절한 동작입니다. 만든. 그러나 이는 OkHttp 클라이언트가 이제 캐시 된 404 응답을 사용함을 의미합니다.
Date 헤더는 리소스를 마지막으로 수정 한 시간을 확인하지 않고 신선도를 계산하기위한 것 같습니다. RFC 7232 section 3.3은 클라이언트가 Date 헤더의 값을 If-Modified-Since 값으로 사용할 수 있다고 말합니다. 그러나이 동작이 받아 들여지는 것을 제안하는 웹의 다른 문서를 찾지 못했습니다. Mozilla's documentation on the If-Modified-Since header에 Date 헤더에 대한 참조가 표시되지 않습니다.
Postel의 법률은 OkHttp가 If-Modified-Since 헤더의 다른 소스로 사용하여 Date 헤더를 오용하지 않도록해야한다고 제안하지 않았습니까?