경우에 따라 GET 요청 다르게 보내기(Conditional get request)

HTTP 프로토콜에서는 캐싱을 위해 서버에서 받은 자원이 그 후로 변경이 되었는지 확인하는 정보를 주고 받을 수 있다.

처음 자원을 요청할 때는 당연히 요청만 하고, 두번째 요청 때는 첫번 째 요청의 응답에 함께 온 헤더 정보를 참고하여, 변경사항이 있는지 물어본다.

최초 요청 시에는 아래와 같이 요청만 할 것이다.

GET /sample.html HTTP/1.1
Host: example.com

이에 대한 응답을 받으면 캐싱에 중요한 정보(Last-Modified, eTag 등)를 저장한다. 그 후에는 아래와 같이 추가적인 정보와 함께 재 요청하게 된다.

GET /sample.html HTTP/1.1
Host: example.com
If-Modified-Since: Wed, 01 Mar 2016 13:24:52 GMT
If-None-Match: “c1d4a244”

서버는 추가적인 정보를 바탕으로 자원에 변경사항이 있다면 자원을 포함한 응답을, 변경사항이 없다면 304 상태 코드를 내려줄 수 있다.

참조

HTTPS가 HTTP보다 안전하다면, 왜 모든 사이트가 HTTPS를 쓰지 않을까?

대부분의 개발자라면 HTTP나 HTTPS를 모르지 않을 것이다.  가장 많이 알려진 상식으로는

  • HTTPS가 HTTP보다 안전하다.
  • HTTPS는 HTTP보다 비용(시간, 자원 등)이 많이 든다.
  • 모든 사이트의 모든 연결이 HTTPS를 쓸 필요는 없다.

정도이다.

모두가 궁금해할만한 내용이라 인터넷에는 이와 관련된 다양한 의견과 문답이 있다. 검색해보면 쉽게 나오는데 이 중에서 HTTPS를 최대한 쓰는 것이 좋다는 답이 개인적으로 설득력이 있어 옮겨본다.

전 구글러이자 현 핀터레스트(Pinterest)의 개발자인 제프 넬슨(Jeff Nelson)의 ’10년 전이라면 모르겠지만, 지금은 가능한한 HTTPS를 쓰는 것이 좋다.’라는 답변하고 있다.  그는 자신의 의견에 대한 근거로

  • 암호화된 연결은 ISP나 정부의 추적 가능성이나, 멜웨어(malware)나 스푸핑(spoofing) 가능성을 낮춘다.
  • 256 bit 암호화는 cpu에게 큰 부담이 아니며, SSL 협상으로 지연되는 시간은 ~500ms 정도다.

등을 열거했다.   더 자세한 내용은 참고를 확인하자.

참고