bdfgdfg

HTTP Header, body, MIME타입 본문

웹프로그래밍/JSP_Servlet

HTTP Header, body, MIME타입

marmelo12 2023. 10. 31. 23:16
반응형

클라이언트-서버간의 데이터 송수신

기본적으로 클라이언트와 서버간의 데이터를 송신을 위해서는 내가 어떠한 형태의 데이터를 보내건 byte Array에 담아서 데이터를 송신해야한다. 이러한것을 직렬화(Serialization)이라고함.

 

반대로, 상대방측이 byteArray에 담긴 데이터를 보냈고, 이 byteArray가 어떤 형식이었다는것을 서로가 약속한다면 그것을 읽어들이는 측에서는 약속을 토대로 byteArray에 담긴 데이터를 해석하면 된다.

이를 역직렬화(Deserialization)이라고 한다.

-> 그래서 프로토콜(protocol)이 중요하다. 서로가 데이터를 주고받을 때 어떻게 해석할래?가 주요관건

 

HTTP메시지도 마찬가치다.

웹 환경에서는 이 HTTP라는 프로토콜을 통해서 서로가 데이터를 해석하는 것.

 

또한 보내는데이터가 다양한데(avi,html,json,xml등등..)

그 데이터의 타입이 무엇인지?등에 대한 정보를 헤더정보에 포함해서 요청 및 응답을 한다.

 -> 어떤 데이터를 던져줄 때 이 데이터의 타입(형식)을 MIME 타입(Content-Type)이라고도 함.

   --> https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types MIME TYPE

 -> 만약 던져주는게 HTML 형식의 String으로 보냈는데, MIME타입을 text/html이 아닌 text/plain과 같이 보내면 html String 그 자체(평문)를 응답받은측에서 해석해버린다.

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	// text/plain타입으로 MIME설정.
	response.setContentType("text/plain; charset=utf-8");
	
	PrintWriter out = response.getWriter();
	out.println("<html>");
	out.println("<body>");
	out.println("<h1>html 문자열 전송</h1>");
	out.println("</body>");
	out.println("</html>");
	//out.println("{\"error\":\"fail\"}");
	out.flush();
}

text/html로 보내는경우.

 -> 클라이언트가 서버에 요청할때는 Content-Type이 중요하지않음. 서버에서 어떤식으로 요청할지는 작업당시에 정하면 되니(혹은 API문서를 통해 이렇게 요청해야한다고 강제), 근데 응답은 중요. 받아서 해석하는건 웹브라우저니깐.

 

HTTP메시지는 요청(Request)과 응답(Response)에 따라 메시지형태가 조금다른데 그것은

https://blog.naver.com/allstar927/90161809512 여기에 깔끔히 설명이 되어있음.

 

 

 

 

 

 

 

 

 

반응형

'웹프로그래밍 > JSP_Servlet' 카테고리의 다른 글

FrontController  (0) 2023.11.01
웹 서버(web server) vs 웹애플리케이션 서버(was),stateless  (0) 2023.10.31
JSP 이해  (0) 2023.10.30
톰캣 프로젝트 Add 안되는경우  (0) 2023.10.25
모델2(MVC) 방식 작업  (0) 2023.08.13
Comments