티스토리 뷰

BackEnd/JAVA

[Ch02] 2. GET 요청

JINSUKUKU 2021. 12. 10. 04:15

📕 제 2장 웹 프로그래밍 기초 다지기

2.2 Get요청

URL에 데이터를 포함하므로 데이터 조회에 적합하다

데이터 전송에 특화된 방식이 아니므로, 바이너리 및 대용량 데이터 전송은 불가능하다

요청 라인과 헤드 필드의 최대 크기가 존재한다

    - HTTP 사양에는 제한사항이 없다

    - 대용량 URL로 인한 문제 발생 → 웹 서버에 따라 최대 크기가 제한된다

    - Microsoft IIS 6.0+ : 16KB

    - Apache 웹 서버 : 8KB

 

 

💬 GET 요청이 발생하는 경우

1. 웹 브라우저 주소창에 URL을 입력하여 서버의 자원을 요청하는 경우

     (예) http://localhost:9999/web02/GetTest.html GetTest.html을 요청

2. 링크를 클릭하는 경우

3. 입력 form의 method 속성 값이 get인 경우

 

 

💬 GET 요청의 데이터 전달 형식

GET으로 요청하는 경우 서버에 보낼 데이터는 URI에 붙인다

HTTP 요청 정보의 첫 번째 라인을 살펴보면, 사용자가 입력한 값이 서비스 주소의 뒤에 붙어 있는 것을 확인할 수 있다

 

💡 GET /web02/CalculatorServlet?vl=2O&op=%2B&v2=30 HTTP/1.1

 

? 문자는 서비스 주소와 데이터를 구분하기위해 작성한다

& 문자는 데이터를 구별하는 구분자이다

= 문자는 매개변수 이름과 값을 구분하기 위한 구분자이다

 

GET 요청으로 데이터를 전달할 때에는 key, value의 형태를 갖는 쿼리 스트링의 형태로 전달한다

 

 

💬 GET 요청의 쓰임새

GET 요청은 자료 검색과 같이 데이터를 조회하는 경우에 적합하다. URL에 검색어나 게시글 번호, 상품 번호 등을 포함하기 때문에 메일이나 단문 메시지를 사용해 다른 사람에 전달하기가 쉽기 때문이다. URL만 있다면 언제든지 해당 페이지로 바로 찾아갈 수 있다는 점이 편리하다

 

 

네이버나 구글과 같은 검색 엔진에 검색하고, 주소창의 URL을 확인해보면 검색어를 포함하여 다양한 옵션들이 포함되어 있는 것을 확인할 수 있다. 검색 서비스에서 GET 요청을 사용하는 이유는 쉽게 공유하기 위함이다. 링크만 있다면 해당 페이지로 바로 찾아갈 수 있다

 

 

💬 문제점과 개선방안

보안에 취약하다

GET 요청은 웹 브라우저의 주소창에 사용자가 입력한 정보가 그대로 노출되므로, 보안 문제가 발생할 수 있다

로그인이나 개인정보 관리와 같은 보안이 필요한 경우에는 GET 요청을 사용해서는 안된다

 

바이너리 데이터를 전송할 수 없다

GET 요청으로는 바이너리 파일 전송이 불가능하다

이미지나 동영상과 같은 바이너리 파일의 데이터는 URL에 붙여서 전송할 수 없다

BASE64라는 인코딩 방식을 이용하면 바이너리 데이터를 문자화해서 보낼 수 있다

하지만 URI나 헤더 정보가 너무 크면 웹 서버에서 처리할 수 없기 때문에 바이너리를 전송하기에 적합하지 않다

 

개선 방안

바이너리 데이터의 전송, 주소창에 데이터가 노출되는 문제는 POST 요청을 사용하면 해결할 수 있다

 

 

'BackEnd > JAVA' 카테고리의 다른 글

[Ch02] 4. 파일 업로드  (0) 2021.12.10
[Ch02] 3. POST 요청  (0) 2021.12.10
[Ch02] 1-5. HTTP 클라이언트 만들기  (0) 2021.12.10
[Ch02] 1-4. HTTP 응답  (0) 2021.12.10
[Ch02] 1-3. HTTP 요청  (0) 2021.12.10
댓글
«   2024/12   »
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
최근에 올라온 글
글 보관함
Total
Today
Yesterday