브라우저 주소창에 주소를 입력하고 엔터키를 누르면 무슨일이 일어나는지 알아봅니다.

URL ( Uniform Resource Location )

브라우저 (클라이언트) ← http / https 통신 → 서버 ( 리소스가 있는 곳, 웹페이지, 이미지, 폰트등등)

브라우저 ← https (http) → 서버
클라이언트라고도 함 http 리소스가 있는 곳으로, 웹페이지, 이미지, 폰트 등등
주소창에 URL 입력하여 프로토콜을 URL이 가리키는 도메인에 접속
요청 (Request) 보냄 이용하여 응답 (Response ) 함
Request에는 아래와 같은 내용이 보내짐 ( 예시)
GET / index.html HTTP/1.1 Host: www.example.com
Accept-Language: en-us 통신한다 HTTP/1.1 200 OK
Date: 1 Jan 2023 09:00
Content-Type: text/html
<!DOCTYPE html>
<html> … </html>
( 받은 요청에 따라 이런 내용으로 응답합니다 ) 🅰️
🅰️ 받고나서 브라우저는
<!DOCTYPE html> 부분의 html 코드 읽어서 구조화합니다 이것을 DOM 이라고 부릅니다.
(Document Object Model )
DOM은 html 문서안에 있는 오브젝트 또는 엘리먼트에 해당 (대표)합니다 이것들은 paragraphs of text, images, links 그외 것들로 브라우저는 필요시 리소스를 얻기위해 서버에 다시 요청합니다. 병렬로 요청하므로 매우 빠르게 이루어집니다 🅱️
🅱️ 통해 리소스를 가져오면 랜더링하여 브라우저에 표현합니다.
HTML 문서를 랜더링한다는 것은 문서를 표시( display) 하는 것을 말합니다
1️⃣ 내컴에서 a.html를 만들고 이것을 웹호스팅 업체에서 할당받은 곳, 우리가 서버라 부르는 곳에 파일질라를 통해 업로드 한다. 2️⃣ a.html는 닷홈서버에 올려져 있고 a.html에 사용된 이미지, 폰트 등등이 서버에 있다.
a.html 페이지에 접속하려면 example.com 이라는 도메인을 사용해야 한다
3️⃣ 친구가 내 도메인주소http://example.com/a.html 로 접속하면 위에서 언급한 요청이 보내지고 4️⃣ 서버는 a.html 내용을 보낸다
5️⃣ 응답을 받고 이것들로 DOM를 형성하면서 필요한 리소스를 다시 요청하여 받아온다. 6️⃣ 리소스 요청이 있다면 해당 리소소를 보내준다.
7️⃣ 랜더링하여 브라우저에 표시합니다

<aside> 🔥 현재까지 랜더링은 클라이언트, 사용자의 브라우저에서 이루어지고 있다. 앞으로는 더 빠른 응답을 위해 서버에서 랜더링이 이루어지는 방법이 개발되고 있다.

</aside>

💊 클라이언트 vs 서버가 데이터를 교환하는 방법

• 클라이언트에 의해 전송되는 메시지를 **요청(requests)**이라 하고, 요청에 대해 서버에서 응답으로 전송하는 메시지를 **응답(responses)**이라고 한다.

스크린샷 2024-03-24 오후 2.23.12.png

스크린샷 2024-03-24 오후 2.27.09.png

이미지출처 : https://e2e.ti.com/blogs_/archives/b/energyzarr/posts/the-true-cost-of-an-internet-click

http_request.gif

이미지출처 :https://www.oreilly.com/openbook/webclient/ch03.html

💊 HTTP POST 메소드는 Node.js에서 지원되고 서버로 데이터를 전송한다. express에서는 app.post()메소드를 사용하여 들어오는 POST 요청을 처리합니다.

예제는 https://www.geeksforgeeks.org/how-to-get-post-data-in-node-js/

app.post('/',
	(req, res) => {  
	  console.log("post req",req.body)}
	  console.log("post headers : " , req.headers)
	    
input으로 유저이름과 비번을 입력하고 submit 하면
결과는 아래와 같이 객체형식으로 출력된다
post res : { username: 'cxcxc', password: 'sdcdsc' }
아래는 req.header가 출력되었는데, 요청본문에는 사용자이름과 비번이 포함되어 있고 
**헤더에는 인증토큰이 포함**되어 있다.

스크린샷 2024-03-24 오후 2.00.26.png