목록이론 (33)
오봉이와 함께하는 개발 블로그
검증 헤더와 조건부 요청 1 캐시 시간 초과 캐시 유효 시간이 초과해서 서버에 다시 요청하면 다음 두 가지 상황이 나타난다. 서버에서 기존 데이터를 변경함 서버에서 기존 데이터를 변경하지 않음. 캐시 만료후에도 서버에서 데이터를 변경하지 않음 데이터를 전송하는 대신에 저장해 두었던 캐시를 재사용 할 수 있지 않을까? 단, 클라이언트의 데이터와 서버의 데이터가 같다는 사실을 확인할 수 있는 방법이 필요하다. 검증 헤더 추가 참고 : Last-Modified에는 편의상 날짜를 한글로 표기했지만 UTC를 따라야 한다. Last-Modified에 있는 값을 같이 기록한다. 60초가 지나서 요청을 다시 보내야 하는데, Last-Modified를 보고 요청을 보낸다. Last-Modified에 있는 값을 넣어서 요..
캐시 기본 동작 캐시가 없을 때 브라우저에서 star.jpg를 다운로드 받았다. 두 번째 요청을 캐시가 없기 때문에 첫 번째 요청과 똑같은 응답을 다시 내려줬다. 브라우저에서 star.jpg를 다운로드 받았다. 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. 인터넷 네트워크는 매우 느리고 비싸다. 브라우저 로딩 속도가 느리다. 느린 사용자 경험을 준다. 캐시 적용 cache-control: max-age=60를 통해 최대 60초간 캐시에 저장하도록 한다. 두 번째 요청할 때는 캐시를 먼저 검색해서 유효 시간을 검증하고 유효 시간이 지나지 않았으면 캐시 저장소에서 조회한다. 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다. 비싼 네트워크 사용량을 줄일 수 있..
인증 Authorization WWW-Authenticate Authorization 클라이언트 인증 정보를 서버에 전달 Authorization: Basic xxxxxxxxxxxxxxxx 인증과 관련해서 여러 메커니즘이 있는데 메커니즘마다 value에 들어가는 값이 다르다. 하지만 HTTP Authorization 헤더는 메커니즘에 관계없이 제공한다. WWW-Authenticate 리소스 접근시 필요한 인증 방법 정의 리소스 접근시 필요한 인증 방법 정의 401 Unauthorized 응답과 함께 사용 WWW-Authenticate: Newauth realm="apps", type=1, title="Login to "apps"", Basic realm="simple" 인증을 하려면 위 정보를 참고해서 ..
협상(콘텐츠 네고시에이션) 클라이언트가 선호하는 표현을 서버에 요청 Accept : 클라이언트가 선호하는 미디어 타입 전달 Accept-Charset : 클라이언트가 선호하는 문자 인코딩 Accept-Encoding : 클라이언트가 선호하는 압축 인코딩 Accept-Language : 클라이언트가 선호하는 자연 언어 협상 헤더는 요청시에만 사용한다. Accept-Language 예시 적용 전 한국어 브라우저를 사용, 다중 언어 지원 서버에 페이지를 요청하면 기본 언어 페이지(en)를 응답한다. 적용 후 한국어 브라우저를 사용, Accept-Language: ko로 다중 언어 지원 서버에 페이지를 요청하면 한국어를 지원하는 서버기 때문에 한국어 페이지로 응답한다. 복잡한 예시 한국어 브라우저를 사용, Ac..
HTTP 헤더 header-field =field-name ":" OWS field-value OWS (OWS : 띄어쓰기 허용) field-name은 대소문자 구분이 없다. 용도 HTTP 전송에 필요한 모든 부가정보 예 : 메시지 바디의 내용, 메시지 바디의 크기, 압축 여부, 인증 여부, 요청 클라이언트, 서버 정보, 캐시 관리 정보 표준 헤더가 너무 많다. 필요시 임의의 헤더 추가 가능 HTTP 헤더 분류 - 과거 RFC2616 헤더 분류 General 헤더 : 메시지 전체에 적용되는 정보 예 : Connection: close Request 헤더 : 요청 정보 예 : User-Agent: Mozilla/5.0 (Macintosh; ..) Response 헤더 : 응답 정보 예 : Server: A..