땃지
ing
땃지
전체 방문자
오늘
어제
  • 분류 전체보기 (100)
    • 공부 (37)
      • Java (4)
      • Spring Boot (4)
      • 자료구조 (4)
      • CS (18)
      • JSP (6)
      • Git (1)
    • 문제 해결 (60)
      • 백준 (51)
      • 프로그래머스 (9)
    • 프로젝트 (3)
      • 당신의 안목 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Contact

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
땃지
HTTP 프로토콜, 요청 메서드 (GET, POST)
공부/CS

HTTP 프로토콜, 요청 메서드 (GET, POST)

2021. 10. 1. 20:31

HTTP 프로토콜

HTTP 프로토콜이란 웹 브라우저와 웹 서버 사이의 데이터 통신 규칙을 의미한다.

우리가 어떤 웹 페이지를 이용하려고 할 때 웹 브라우저는 정해진 프로토콜에 따라 데이터를 요청(Request)하고, 서버는 받은 데이터를 분석하여 사용자가 원하는 일을 처리하여 응답(Response) 한다.

 

- URL (Uniform Resource Locators)

서버에 자원을 요청하기 위해 입력하는 주소이다.

URL의 구조는 다음과 같다.

protocol://host:port/resource path?query

 

위의 URL을 이용하여 사용자는 서버에 데이터를 요청할 수 있는데, 이때 사용하는 것이 HTTP 요청 메서드이다.

이 요청 메서드에 대해 자세히 알아보자.


HTTP 요청 메서드

GET 요청

GET 요청이 사용되는 경우는 크게 세가지가 있다.

1) 웹 브라우저 주소창에 URL을 입력하는 경우

2) 링크를 클릭하는 경우

3) 입력폼의 메소드 속성 값이 get인 경우 (메소드 속성 기본값이 get이므로 생략해도 됨)

 

GET 방식으로 서버에 요청을 보내는 경우 보내는 데이터는 URL에 붙인다.

따라서 데이터를 조회하는 경우에 적합한 방식이다.

 

하지만 URL에 사용자 정보가 그대로 노출되어 보안이 좋지 않고,

이미지나 동영상 같은 바이너리 파일의 데이터는 보낼 수 없다.

 

POST 요청

POST 요청 방식은 GET 방식과 달리 URL에 사용자 정보가 포함되지 않는 요청 방식이다. URL에 데이터가 포함되지 않아 외부에 데이터 노출이 되지 않으며 보안성이 강화된다.

그렇다면 사용자 데이터는 어디에 저장이 될까?

사용자의 요청 데이터는 HTTP 요청 정보에서 공백 라인 다음의 메세지 본문 위치에 포함되어 전송되고, 때문에 바이너리 및 대용량 데이터의 전송이 가능하다. 하지만 사용자의 요청에 대한 응답을 공유할 수 없다는 단점이 있다.

 

POST 방식을 사용하기 위해서는 form의 메소드 속성을 post로 지정해야 한다.

 

POST방식을 이용하면 파일의 업로드 또한 가능하다.

파일을 첨부하기 위해서는 멀티 파트 인코딩이라는 특별한 형식이 필요한데 멀티파트 인코딩을 통해 데이터의 미디어 형식과 파트 구분자를 정의한다.

엔티티헤더:미디어타입;파트구분자

GET 방식과 POST 방식 모두 문자 매개변수 구분에 '&'를 이용한다.

하지만 멀티파트 전송에서 바이너리 데이터를 함께 전송할때는 '&'로 정확한 구분이 불가능하다.

따라서 정의된 파트구분자를 이용해 매개변수를 구분한다.

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)
    '공부/CS' 카테고리의 다른 글
    • 객체지향 프로그래밍(OOP)
    • 프로세스와 스레드
    • 쿠키, 세션, 캐시
    • 애플리케이션 아키텍처의 이해
    땃지
    땃지

    티스토리툴바