HTTP

Now, Sophia·2021년 9월 14일
1

TIL-ETC

목록 보기
2/13
post-thumbnail

HTTP

Hyper Text Transfer Protocol

문서와 문서가 링크로 연결되어 있는 것을 어떻게 주고 받을 지에 대한 소통방식.

▼ 통신과 HTTP stateless

▪︎ 컴퓨터의 통신 HTTP.

유저 컴퓨터에서 요청 request -> 서버 컴퓨터에서 처리 -> 결과값을 유저에게 전송 response

stateless

HTTP 개별통신은 모두 독립적이어서 과거의 HTTP 통신의 결과를 보존하지 않는 것.
따라서 로그인 후, 다시 또 로그인 해야하는 것.
토큰이라는 딱지를 얹어서 request 하면 서버에서 같이 받아들인다.

즉, 클럽에서 팔찌를 받고서 클럽을 나갔다가 다시 들어올 때 팔찌를 보여주면 그냥 통과가 되듯이..

유저가 아이디, 비번을 가지고 로그인 요청을 하면 서버로부터 토큰을 받는다.
그 토큰과 함께 request를 한다.
서버는 토큰을 확인 후 response 한다.

▼ Request & Response

메세지 형식이며, request는 대부분 프론트엔드에서 보낸다.
1개의 request에는 1개의 response가 세트이다.
즉, 한 번에 한 개만 요청 할 수 있다.

▶︎ Request 구조

  1. Start Line - 요청의 첫번째 줄

    GET / login HTTP/1.1

    HTTP method - 요청이 의도한 액션을 정의 (GET method)
    Request targe - 요청이 전송되는 목표 url ()
    HTTP version - HTTP 버전

  2. Headers - 요청의 메타데이터(키/값 형태를 띄고 있는 객체형태)를 담고 있는 부분

    Host : www.wecode.co.kr
    User-Agent : chrome
    Content-Type : application/json
    Content-Length: 50

  3. Body - 요청의 실제 내용 (요청 메소드에 따라 존재하지 않을 수 있음)

    Body : {
    “username” : “”wecode,
    “Password” : ”wecode123”
    }

▪︎ 요청메세지예시

Start line : POST / users/login HTTP/1.1
Headers : Content-Type, Content-Length
Body : request에 따라 응답값이 바뀌어서 전달 함.

토큰은 다른 로그인이 필요한 경우에..(유효기간이 있으나 따로 설정)
아이디랑 비밀번호를 중요한 정보기 때문에 토큰으로 바꿔서 관리.

백엔드에서 body에 담기는 양식(키값)을 정해준다.

▪︎ HTTP request methods

  1. GET : 데이터를 받아 올 때 사용, 웹페이지에 접속해서 필요한 데이터를 불러올 때 사용
    즉, 내가 원하는 데이터를 데이터베이스에서 가져와줘
  2. POST : 데이터를 생성 / 수정할 때 사용. 바디에 담는 내용이 핵심
    데이터를 서버에 전달할테니, 서버에서 알아서 수정이나 생성 해줘
  3. DELETE: 서버에 저장된 특정데이터를 삭제할 때 (직관적으로).
    postget에서도 삭제함.

▶︎ Response 구조

요청 메소드에 따라 존재하지 않을 수 있다

  1. Status Line: 응답에 대한 상태 첫번째줄

    HTTP version(HTTP버전) -> status code(응답상태코드) -> status text (응답의 상태를 설명하는 텍스트)

    HTTP/1.1 404 Not Found
    HTTP/1.1 200 SUCCESS

  2. Headers (request와 동일) 응답의 메타데이터를 담고 있는 부분

    Content-Type:
    Date:

  3. body (응답해줄 데이터) - request에 따라 응답값이 바뀌어 전달

    객체 형식
    { “message” : ”login success!”,
    “Token”: “dfknw”
    }

▪︎ Request Status code

Success

200: ok, 201 : created

Error

400: bad request (요청주소가 잘못됐을때),
401: Unauthorized (회원이 아닌데 회원인척),
403: Forbidden (회원인데 자격이 안됌),
404: Not found (No data).

-> (프론트에서 해결)

Server Error

500: internal server error
(서버가 터졌을 때 생기는 에러.
서버 터지는 경우, 프론트가 제대로 데이터를 안줬을 때도 터지는 경우 있음.)

한번 요청에 한번의 결과가 오기 때문에 400, 500 같이 뜨진 않고, 한번의 오류만 뜸

HTTP 프로토콜의 문제점

서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는다는 점이었다.
정보가 암호화 되어있지 않는다는 것은 쉽게 해킹이나 데이터를 도난 당할 수 있다는 것이다.
그래서 보안이 강화된 HTTPS 가 나온 것.

profile
Whatever you want

0개의 댓글