ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP
    Server/기타 2022. 10. 30. 16:59

    1. HTTP란 무엇인가?

    1.1 HyperText

    - 정의 : 참조(하이퍼링크)를 통해 독자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트

    1.2 Transfer

    - HTML 문서를 다른 컴퓨터에 주고 받는데 그 때, 보내는 주체와 받는 주체가 있다.

    1.3 Protocol

    -  프로토콜은 협약, 통신 규약이라는 의미이다.

     

    즉, HTTP는 컴퓨터끼리 어떻게 HTML 파일을 주고받을 지에 대한 통신 규약을 의미한다. 

     

    2. Stateless

    - Stateless = state(상태) + less(없음)

    즉, 각각의 HTTP 통신(요청/응답)은 독립적이기 때문에 과거의 통신(요청/응답)에 대한 내용을 전혀 알지 못 한다는 특징.

    따라서, 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 한다.

     

    3. Request / Response

    3.1 Request의 구조

    Start Line : 
    HTTP Method / Request target / HTTP Version
    // ex) GET /login HTTP/1.1 // 해석: GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다!
    // HTTP Method : 해당 요청이 어떤 액션에 대한 요청인지 적혀있다. (GET, POST, DELETE, PATCH)
    // Request target : 요청의 target(uri)이 적혀있다.
    // HTTP version : 통신에 사용되는 HTTP버젼이 적혀있다. 주로 HTTP 1.1  버전이 사용된다.
    
    
    Headers: {
        Host: // 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다. (ex. https://www.apple.com)
        User-Agent: // 요청을 보내는 클라이언트의 브라우저에 대한 정보 (ex. chrome)
        Content-Type: // 해당 요청이 보내지는 메시지 Body의 타입(ex. application/json)
        Content-Length: // body 내용의 길이
        Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 여기에 담는다.
    }
    Body: { // 해당 요청의 실제 내용입니다. 주로 Body를 사용하는 메소드는 POST 입니다.
        "user_email" : "wecode@gmail.com"
        "user_password": "wecode"
    }

     

    3.2 Response의 구조

    Status Line:
    HTTP Version / Status Code / Status Text
    ex) HTTP/1.1 404 Not Found
    # 해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청(ex. 로그인 시도)에 대해서
    # 유저의 정보를 찾을 수 없기 때문에(Not Found) 404 상태 메세지를 보낸다.
    
    HTTP/1.1 200 SUCCESS
    # 해석: HTTP 1.1 버전으로 응답하고 있는데, 프론트엔드에서 보낸 요청에 대해서 성공했기 때문에
    # 200 상태 메세지를 보낸다.
    
    Headers: { // 요청의 헤더와 동일합니다. 응답의 추가 정보(메타 데이터)를 담고있는 부분입니다.
        Host:
        Server Header:
        Content-Type:
        Content-Length:
        Authorization:
    }
    Body: { // 요청의 메소드에 따라 Body가 항상 존재하지 않듯이 응답도 응답의 형태에 따라 데이터를 전송할 필요가 없는 경우엔 Body가 없을 수도 있습니다.
        "message": "SUCCESS"
        "token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)

    댓글