HTTP 요청 중 GET요청에 대해 살펴본다. web02 프로젝트를 배치하여 톰캣 서버를 실행한다.이후 http://localhost:9999/web02/GetTest.html 링크를 실행한다.
이렇게 링크 실행 화면이 뜬다. 웹 브라우저 주소창에 URL을 입력하여 서버의 자원을 요청하는 경우 GET 요청이 발생한다. GET 요청의 3가지 3종세트 예시가 보인다. 크롬의 DevTools의 Network 탭에서 요청정보를 확인할 수 있다.
GET 요청이 이루어진 것을 확인할 수 있다.
링크를 클릭할 때에도 GET 요청이 발생한다. GetTest.html 링크 화면에서 '구글'링크를 클릭한다.
<h3>GET 요청 2: 링크를 클릭할 때</h3>
<p>
<a href="http://www.google.com">구글</a><br>
<a href="http://www.facebook.com">페이스북</a><br>
</p>
<a>태그는 GET 요청을 만든다. 크롬의 DevTools의 Network 탭에서 요청정보를 확인 한다.
GET 요청이 이루어진 것을 확인할 수 있다.
입력 폼의 method 속성 값이 'get'인 경우 서버에 GET 요청을 보낸다. GetTest.html 링크 화면에서 화면 입력 폼에 숫자를 입력 후 '=' 버튼을 클릭한다.
<h3>GET 요청 3: 입력폼의 method 속성을 GET으로 지정했을 때</h3>
<form action="CalculatorServlet" method="get">
<input type="text" name="v1" size="4">
<select name="op">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" name="v2" size="4">
<input type="submit" value="="><br>
</form>
method 속성 기본값이 'get'이기 때문에 생략해도 된다. 크롬의 DevTools의 Network 탭에서 요청정보를 확인 한다.
GET 요청이 이루어진 것을 확인할 수 있다.
GET 요청은 서버에 보낼 데이터를 URI에 붙인다. 위 GET 요청 3의 요청정보 그림에서 첫 번째 라인을 살펴보면 사용자가 입력한 값이 서비스 주소 뒤에 붙어있다. '?' 문자는 서비스 주소와 데이터를 구별하는 구분자이며, '&' 문자는 데이터들을 구별하는 구분자이고, '=' 문자는 매개변수 이름과 값을 구별하는 구분자이다.
GET 요청은 자료 검색, 게시글 상세 정보 보기, 특정 상품 정보 조회 등 데이터 조회에 적합하다. URL을 통해 언제든지 해당페이지로 이동이 가능하고 결과화면을 다른 사람에게 쉽게 공유가 가능하다. 구글 화면에서 'HTTP 프로토콜' 검색 결과 화면과 URL이다.
HTTP 프로토콜 - Google 검색
HTTP(HyperText Transfer Protocol, 문화어: 초본문전송규약, 하이퍼본문전송규약)는 W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. ... 이 정보가 모니터와 같
www.google.com
검색 결과를 출력한 주소창의 URL을 확인하면 검색어를 포함한 다양한 검색 옵션들이 포함되어 있음을 알 수 있다.
하지만 보안 문제가 발생할 위험이 있고 이미지와 동영상과 같은 바이너리 파일의 데이터는 URL에 붙여 보낼 수 없다. BASE64라는 인코딩 방식을 통해 바이너리 데이터를 문자화해서 보낼 수 있지만 URI나 헤더 정보가 너무 크면 웹 서버에서 처리할 수 없기 때문에 바이너리를 전송하기에 GET 요청은 적합하지 않다. 물론 HTTP 사양에서는 요청라인이나 헤더 필드에 최대 크기를 제한하지 않지만 웹 서버는 대용량 URL을 사용할 때 보안 문제가 발생할 수 있기 때문에 최대 크기를 제한 한다.
바이너리 데이터 전송이나 주소창의 데이터 노출 문제는 POST 메소드를 사용하면 해결이 가능하다.
참고도서 : https://freelec.co.kr/book/1674/
[열혈강의] 자바 웹 개발 워크북
[열혈강의] 자바 웹 개발 워크북
freelec.co.kr
'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글
11. 파일 업로드 (0) | 2022.01.06 |
---|---|
10. POST 요청 (0) | 2022.01.05 |
8. HTTP 프로토콜의 이해 (2) (0) | 2022.01.03 |
7. HTTP 프로토콜의 이해 (1) (0) | 2022.01.02 |
6. 웹 애플리케이션 아키텍처의 특징 (0) | 2022.01.01 |
댓글