HTTP


jonghokim
2013.11.27



HTTP(Hypertext Transfer Protocol)


HTTP is stateless.
HTTP allows for communicate between clients and hosts.


current version : HTTP /1.1

URLs(Uniform Resource Locators)




protocol : http(default port=80), https(default port=443)

resource path : local path on the server


HTTP Request & Response

ex) 네이버(www.naver.com)로 GET 메서드 요청


Response body로는  html 파일이 돌아옴.

Response Header의 Content-Type : text/html

Request Method

GET, POST, PUT, DELETE를 이용하여 URL을 설계하자

추가설명) HEAD :  Response body 없이 Response header만 온다.

TRACE는 'Via'라는 Response header에 어느 ip를 통해서 request가 이동했는지 저장해서 보내줌.

Response Status Code  (1)

                   빈번히 쓰이는 status code만 요약함 . 없는 status code는 구글링!

 Success (2xx)
  • 200 (OK) # 요청이 성공적으로 수행됨.
  • 201 (Created) # 리소스를 성공적으로 생성. ex) 게시물 업로드 성공
  • 202 (Accepted) # 비동기 처리가 시작됬을 때
  • 204 (No Content) # 응답바디에 의도적으로 아무것도 넣지 않았을 때
 Redirect (3xx)
  • 301 (Move Permanently) # URL의 local path가 바뀌어서 리소스가 이동했을 때 # Response header의 Location에 새로운 URL 부여
  • 304 (Not modified) # 대역폭 절약하기 위해 사용, 클라이언트에 캐쉬되었을 때

Response Status Code (2)

 Client Error (4xx)
  • 400 (Bad Request) # 다른 4xx에 오류 표현할게 없으면 쓴다.
  • 401 (Unauthorized) # 리소스에 인증없이 요청
  • 403 (Forbidden) # 인증상태에 관계없이 요청 금지
  • 404 (Not Found) # URL에 해당하는 리소스가 없을 때
  • 405 (Method Not Allowed) # Request Method가 지원되지 않을 때
  • 406 (Not Acceptable) # Request header의 Accept type을 지원하지 못할 때
  • 409 (Conflict) # 리소스 상태에 위반될 경우. # ex) 리소스를 공동으로 수정할 경우, 리소스가 수정된 시간보다 # request의 timestamp가 늦을 경우.

Server Error(5xx)
  • 500 (Internal Server Error) # API가 잘못 작동할 때 # ex) Flask에서 기능상 에러가 났을 때

General Header 

Date :  request/response 의 timestamp
Pragma : 주로 no-cache로 사용.  Cache-Control : no-cache와 같다.
Transfer-Encoding :  Response를 작게 나눠서 보낼 때 chuncked 값을 써준다.
Via : "TRACE" method에서 사용

Entity Header (About request/response message)

Content Prefix :   meta information of message body
Expires: message body가 만료될 시간
Last-Modified : message가 마지막으로 수정된 시간

Request Header 


Accept prefix :  acceptable media-type, charset, language etc..

From, Host, Referer, User-Agent :  Client Info

Referer :  log 분석시 중요. 

If prefix :  request의 if  header만족시  response의 리소스 반환


Response Header 


ETag  : MD5 해쉬값으로 리소스가 수정되었을 때 해쉬값 비교로 확인

Location : redirect해야될  URL 

Server : Apache, Nginx와 같은게 나옴


HTTP message Example (1)

ex) dic.naver.com (네이버 사전) - 여기서 'intiated' 검색(query string에서 확인)

사진있음

HTTP message Example (2)

ex) daum.net - 302  Object Moved

사진있음

Responser header의 Location에 새로운 URL 있다.

HTTP message Example (3)

ex) daum.net  - 200 OK 

사진있음

HTTP message Example (4)

ex) 드랍박스 로그아웃 (response로 cookie 해제/  Location : /login?lhs_type=anywhere)

사진있음



HTTP 기본 끝.


이제 중요한거!

사실 이거하려고함.


Authentication & Cache








다음 시간에..

HTTP

By JongHo Kim

HTTP

http

  • 801