본문 바로가기
Web

Web_GET과 POST, MIME

by 유서담 2024. 1. 10.

GET 

 

전송할 HTTP 방식의 기본 값

클라이언트가 서버로 데이터를 요청하기 위해서 사용하는 요청방식

데이터의 흐름은 서버에서 클라이언트 [ 클라이언트 ← 서버 ]

  • 폼 데이터를 URL 끝에 붙여서 전송시킨다
  • 웹 브라우저의 주소 표시줄에 그대로 나타난다 (보안에 취약)
  • 구분자로 '?' 를 사용하여 URL뒤에 name=value와 같은 형식의 요청 파라미터를 붙이기 때문에 URL과 요청 파라미터를 구분
  • 여러 개의 요청 파라미터를 전송할 경우에는 '&'를 사용하여 연결한다
  • 서버로 전송하는 데이터의 크기에 제한이 있다

GET방식으로 요청 파라미터 보내기

 

 

 

GET 방식 요청의 예시

  • 웹브라우저의 주소창에 주소를 직접 입력하고 요청하는 경우
  • 링크를 클릭해서 다른 주소를 요청하는 경우
  • <form method="get">으로 설정되어 있고, submit 버튼 클릭해서 값을 제출하는 경우 (폼의 입력양식의 값들이 검색조건으로 사용되는 경우)
  <form method="GET" action="search.jsp">
    <input type="text" name="keyword" placeholder="검색어를 입력하세요" />
    <button type="submit">검색</button>  
  </form>
  <!-- 위와 같이 작성된 웹 페이지에서 검색버튼을 클릭했을 때 -->

 

 

GET 방식 요청일 때 요청 메세지 예시

  GET search.jsp?keyword=자바 HTTP/1.1
  Accept=text/html,application/xhtml+xml,application/xml;q=0.9
  Accept-Encoding=gzip, deflate, br
  Accept-Language=ko,en;q=0.9,en-US;q=0.8

 

 

 

POST

 

클라이언트가 서버로 데이터를 전송해서 리소스를 추가하거나 생성하기 위해서 사용하는 요청방식

데이터의 흐름은 서버에서 클라이언트 [ 클라이언트 서버 ]

  • 요청메세지의 바디부에 데이터가 포함되어 전달되기 때문에 상대적으로 보안이 우수
  • 서버로 전송하는 데이터의 크기에 제한이 없다
  • enctype에 따라서 서버로 보내는 데이터의 형식이 달라진다

 

enctype에 따라서 서버로 보내는 데이터의 형식이 달라진다

<form method="post" enctype="application/x-www-form-urlencoded">
  • enctype을 설정하지 않으면 기본값이 application/x-www-form-urlencoded
  • 요청메세지의 바디부에 포함되어 서버로 전달되는 값이 name=value&name=value&name=value
  • 첨부파일을 업로드하지 않는 경우 사용한다

 

<form method="post" enctype="multipart/form-date">
  • 첨부파일을 업로드하는 경우 사용하는 데이터 전달형식이다
  • 요청메세지의 바디부에 포함되어 서버로 전달되는 값
  • 서버로 전달된 요청파라미터값, 첨부파일을 처리하기 위해서는 멀티파트요청을 처리하는 API 혹은 외부 라이브러리를 사용해야 한다

 

POST 방식 요청의 예시

  • <form method="post">로 설정되어 있고, submit 버튼을 클릭해서 값을 제출하는 경우
  • 폼의 입력양식의 값들이 리소스를 추가하거나 생성하기 위해서 사용되는 경우
  <form method="POST" action="register.jsp">
    <input type="text" name="name" placeholder="이름을 입력하세요" />
    <input type="text" name="id" placeholder="아이디를 입력하세요" />
    <input type="password" name="pwd" placeholder="비밀번호를 입력하세요" />
    <input type="text" name="tel" placeholder="전화번호를 입력하세요" />
    <input type="text" name="email" placeholder="이메일을 입력하세요" />
    <input type="text" name="zipcode" placeholder="우편번호를 입력하세요" />
    <input type="text" name="address" placeholder="주소를 입력하세요" />
    <button type="submit">회원가입</button>
  </form>
  <!-- 위와 같이 작성된 웹 페이지에서 회원가입버튼을 클릭했을 때 -->

 

 

POST 방식 요청일 때 요청 메세지 예시

  POST register.jsp HTTP/1.1
  Accept=text/html,application/xhtml+xml,application/xml;q=0.9,	
  Accept-Encoding=gzip, deflate, br
  Accept-Language=ko,en;q=0.9,en-US;q=0.8
  
  name=홍길동&id=hong&pwd=zxcv1234&tel=010-1234-5678&email=hong@gmail.com

 

요청 메세지의 바디부에 폼입력값이 포함되어 있다

 

 

GET과 POST 비교

구분 GET 방식 POST 방식
전송형태 이름과 값의 형태로 URL에 포함되어 전송 HTTP 헤더속에 감춰서 전송
전송량 제한적(4,096B) 제한 없음
속도 빠름 느림
보안 없음 있음

 

 

 

MIME(Multipurpose Internet Mail Extensions) Type

문서, 파일 바이트 집합의 성격과 형식을 나타내는 정보

 

 

MIME 타입의 구조

 

type/subtype

  • MIME 타입의 슬래시(/)로 구분된 'subtype'으로 구성된다
  • type은 text, image, video와 같은 데이터 타입이 속하는 일반적인 카테고리를 나타낸다
  • submit은 MIME타입이 나타내는 지정된 타입의 정확한 데이터 종류를 식별한다
text/plain text/html text/css image/jpg image/png image/gif

 

 

type의 구조

 

application

  • 모든 종류의 바이너리 데이터
  • 이 바이너리 데이터를 어떤 방식으로든 실행하거나 해석되기 위해서는 특정 애플리케이션을 사용해야 한다
  • 예시 : application/octet-stream  ,   application/pdf   ,   application/zip

 

text

  • 사람이 읽을 수 있는 텍스트 컨텐츠, 소스코드 또는 쉼표로 구분된 CSV 형태의 데이터와 같은 텍스트 형식의 데이터
  • 예시 : text/plain   ,   text/csv   ,  text/html

 

image

  • 비트맵과 벡터 이미지를 모두 포함하는 이미지 또는 그래픽 애니메이션 데이터다
  • 예시 :  image/jpeg   ,  image/png   ,  image/svg+xml

 

주요 MIME타입

 

application/octet-stream

  • 바이너리 파일을 위한 기본값. '알려지지 않은' 바이너리 파일을 의미한다
  • 타입이 알려지지 않은 첨부 파일을 다운로드할 때 응답컨텐츠의 타입으로 설정할 수 있다

 

application/x-www-form-urlencoded

  • 브라우저에서 서버로 폼입력값을 전송할 때 요청 메세지의 바디부에 포함된 데이터의 형식을 지정할 때 사용
  • 폼 입력값이 name=value&name=value&name=value와 같은 형식

 

multipart/form-date

  • 브라우저에서 서버로 폼 입력값을 전송할 때 요청메세지의 바디부에 포함된 데이터의 형식을 지정할 때 사용
  • 폼입력값이 아래와 같은 형식을 가진다 
			    ------WebKitFormBoundaryNHRNFTOBhiYA2zcQ
		            Content-Disposition: form-data; name="title"

		            aaa
		            ------WebKitFormBoundaryNHRNFTOBhiYA2zcQ
		            Content-Disposition: form-data; name="description"

		            bbb
		            ------WebKitFormBoundaryNHRNFTOBhiYA2zcQ
		            Content-Disposition: form-data; name="upfiles"; filename="sql-map-2.dtd"
		            Content-Type: application/octet-stream


		            ------WebKitFormBoundaryNHRNFTOBhiYA2zcQ

 

 

text/plain

  • 텍스트파일에 대한 기본값

 

text/css

  • 웹페이지의 스타일을 지정하는 CSS 파일은 text/css 타입으로 지정해야 한다

 

text/html

  • 모든 HTML 컨텐츠에 타입을 나타낸다

 

text/javascript

  • 자바스크립트를 나타낸다

 

text/xml

  • 모든 XML 컨텐츠 타입을 나타낸다
  • XML은 서로 다른 시스템 간의 데이터 교환용 문서를 만들때 사용되는 데이터 표현형식이다

 

application/json

  • JSON 컨텐츠 타입을 나타낸다
  • JSON은 서로 다른 시스템 간의 데이터 교환용 문서를 만들때 사용되는 데이터 표현형식이다
  •  JSON은 XML에 비해 경량의 데이터 교환 형식

'Web' 카테고리의 다른 글

프로젝트에서 톰캣설정  (0) 2024.01.26
JDBC 프로젝트 개발순서  (0) 2024.01.26
Web_Servlet  (0) 2024.01.15
JSP_JSP와 JSP 구성요소 및 내장객체  (1) 2024.01.05
Web_웹 애플리케이션 개요  (1) 2024.01.03