본문 바로가기
study

자바 웹 개발 워크북 2장 Http 프로토콜

by stilinski 2023. 3. 7.
728x90

HTTP

- 웹 브라우저와 웹 서버 사이의 데이터 통신규칙
 

 

HTTP Proxy

proxy?
- 클라이언트와 서버 사이에서 통신을 중계해 주는 컴퓨터 프로그램
- 빠른전송 => 서버의 응답결과 캐싱을 통한 빠른 전송
- 보안 => 외부로부터 들어오는 데이터를 먼저 받아서 검사가능
 
캐시
- 외부 서버로부터 받은 데이터를 임시로 보관해두는 장소.
 
 

http 구성요소

Request
- Request-Line요청라인
- Request header
- 공백라인 or message-body
 
Response
- Status-Line
- Response Header
- 공백라인 & message body
 
 
헤더종류


- 요청헤더
- 응답헤더
- 본문헤더
 
* 요청헤더의 User-Agent 
클라이언트의 정보를 서버에게 알려주는 헤더.
 
* html, css, xml 등 웹과관련된 표준 명세는 world wide web 컨소시엄에서 관리하고 있음
 
 

 

http 클라이언트 만들기

톰캣 깔기 귀찮네
어쨌든 결론:
통신규약에 맞춰서 데이터를 보내고 받는 게 가능하다면 누구든지 해당 프로토콜의 클라나 서버를 만들 수 있다.
 
 

-----------

Get 요청

https://www.google.com/search?q=http+%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C&oq=http+%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C&aqs=chrome..69i57.8710j0j1&sourceid=chrome&ie=UTF-8

쓰임새 :
- 결과화면을 보관하거나 공유하고 싶을 때 유용.
- 링크만 전달하면 원하는 결과화면을 볼 수 있음
- url에 데이터 포함 -> 데이터 조회에 적합
문제점:
- 보안에 좋지 않음 -> 사용자가 입력한 정보가 URL에 그대로 노출.
- 이미지나 동영상 같은 바이너리 데이터는 URL로 붙여서 보낼 수 없음.
사실 바이너리를 문자화해서 보낼 순 있지만 데이터가 너무 크면 서버에서 처리불가능


 
 
근데
get 요청의 accept는 자동으로 되는 건가?
답: 브라우저가 해줌

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept
 
 
 
--------

POST 요청

url에 데이터 포함 안 함
메세지 본문에 포함 -> 실행결과 공유 불가
바이너리 및 대용량 데이터 전송 가능.
 
문제점 
데이터 전달할 때 get과 마찬가지로 '이름=값&이름=값' 형태로 보내기 때문에
바이너리 보낼 때 의도치 않게 데이터가 망가질 수 있음.

이런식

 
 
 
해결방안

파일업로드 multipart


 
multipart로 하면 보내는 데이터 부분(message-body)에 파트 구분자들이 들어가게 됨.
파트 구분자는 웹브라우저에서 임의로 생성.
 
 
 

728x90

'study' 카테고리의 다른 글

자바 웹개발 워크북 4장 서블릿과 JDBC  (0) 2023.03.09
자바 웹개발 워크북 3장 서블릿 프로그래밍  (0) 2023.03.08
자바 웹개발 워크북 1장  (0) 2023.03.06
spring & spring boot  (0) 2023.02.22
리눅스  (0) 2022.11.19

댓글