티스토리 뷰

Skill/Programming - Network

13. HTTP 요청

gyulee0220 2019. 7. 21. 15:17



1. HTTP 요청


  HTTP 프로토콜은 웹 브라우저에서 서버로 보내는 요청, 서버가 클라이언트로 다시 응답을 주는 기본 구조로 이어진다. 서버로 보내는 요청과 응답에는 일정한 양식이 있어야 각자의 언어를 알아 들을 수 있을 것이다.


<HTTP 요청>

출처 : http://sabercomlogica.com/en/ebook/application-layer-http-protocol-connections/



- Request Line

  Method, URL, version으로 구성되어있는 HTTP 요청 시작 부분


- Header lines

Host 정보, User-Agent(웹 브라우저), Connection (Keep-Alive) 정보가 있는 요청의 헤더 부분


- Entity Body

요청에 대한 바디 (Entity) 


  이를 바탕으로 HTTP 요청을 작성하게 되면 아래와 같이 나오게 된다. 


POST /contacts/new HTTP/1.1
Host: www.zetawiki.com
Content-Type: text/html; charset=UTF-8

Name=Eric&Age=26

(출처 : 제타 위키 - HTTP 요청, 응답)


<HTTP 요청>

출처 : http://sabercomlogica.com/en/ebook/application-layer-http-protocol-connections/



- Status Line

Version, 응답코드, 상태 메세지 등 HTTP 응답 코드 전송


- Header Line

Date, Server 종류, Content - Type 정보


- Entity Body

응답에 대한 바디 (Entity)


  HTTP 응답 역시 아래와 같이 작성 된다.

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
ETag: "3f80f-1b6-3e1cb03b"
Content-Type: text/html; charset=UTF-8
Content-Length: 131
Accept-Ranges: bytes
Connection: close

<html>
<head>
  <title>An Example Page</title>
</head>
<body>
  Hello World, this is a very simple HTML document.
</body>
</html>

(출처 : 제타 위키 - HTTP 요청, 응답)



2. HTTP 메소드


  HTTP 요청을 할때 첫줄에는 반드시 HTTP 메소드에 대한 명시가 필요하다.  


1) GET

- HTTP 리소스 취득을 위해 사용하는 메소드

- URL이나 URL 형식으로 웹 서버측 리소스 요청, 웹 서버에 존재하고 있는 정보에 대해 요청


2) HEAD 

- 메세지 헤더(문서 정보) 취득

- 문서 중 헤더 정보에 대한 요청


3) POST

- 내용 전송 (파일 전송 가능)

- 클라이언트가 서버에 새로운 정보를 작성하기 위해 사용


4) PUT

- 내용 갱신 위주 (파일 전송 가능)

- POST 와 비슷한 기능 이나 내용 갱신을 할 때 주로 사용 


5) DELETE

- 웹 리소스 제거


6) OPTIONS

- 웹 서버 측에 메소드 질의를 위해 사용



3. HTTP 응답 코드


   HTTP 요청을 보낸 후에 HTTP 요청 수행이 가능한지 이에 대한 응답을 보내주어야 한다. 만약 HTTP 전송을 하는 프로그램을 만들었을 때, 해당 응답코드를 받아 내용을 분석하고 어떤 조치를 취할지 결정하기 때문에 프로그래밍에 있어 매우 중요한 요소이다.


  아래는 주요 HTTP 응답 코드다. 더 많은 응답 코드를 알고 싶다면 IANA에서 제공하고 있는 응답 코드 안내 사이트를 참고하면 된다.

  (https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml)



2xx - 성공


  • 200 : GET 요청에 대한 성공
  • 204 : No Content. 성공 했지만 응답 본문에 데이터가 없음
  • 205 ; Reset Content. 성공했으나 클라이언트의 화면 새로 고침 필요
  • 206 : Partial Content. 성공했으나 일부 범위의 데이터만 반환 됨


3xx - 리다이렉션


  • 301 : Moved Permanetly, 요청한 자원이 새 URL에 존재
  • 303 : See Other, 요청한 자원이 임시 주소에 존재


4XX - 클라이언트 에러


  • 400 : Bad Request, 잘못된 요청
  • 401 : Unauthorized, 권한이 없이 요청
  • 403 : Forbidden, 해당 자원 접근 금지
  • 405 : Method Not Allowed, 허용되지 않은 요청 메서드


5xx - 서버 에러


  • 501 : Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
  • 503 : Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우





'Skill > Programming - Network' 카테고리의 다른 글

15. 클라이언트 소켓  (0) 2019.08.04
14. HTTP 쿠키 (Cookie)  (0) 2019.07.28
12. HTTP 연결  (0) 2019.07.16
11. 프록시 (Proxy)  (0) 2019.07.07
10. URI Class  (0) 2019.06.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함