기초/HTTP에 해당하는 글 9

  1. https, http2 2021.10.19

    https https는 웹 서버에 SSL 암호화를 추가하는 모듈이다. 개인 정보 보호에 대한 관심이 높아짐에 따라, https 적용이 필수가 되었다. https가 적용되면 구글 크롬을 기준으로, 아래 이미지처럼 주소창 옆에 자물쇠 아이콘이 뜬다. 요청을 보낼 때 헤더에 너무 많은 정보가 자세하게 드러나게 된다. 쿠키값, 쿼리스트링 등... 이런 중요한 정보들이 탈취가 되는 경우를 대비하기 위해서 https를 사용하여 오고 가는 데이터를 암호화한다. const http = require("http"); const fs = require("fs").promises; http .createServer((req, res) => { res.writeHead(200, { "Content-Type": "text/ht..


  2. 세션 2021.10.19

    무엇인가? 개발자 도구로 쿠키를 들여다보거나 수정이 가능하기 때문에, 쿠키에 직접적인 데이터를 넣지는 않는다. → 암호화한 값을 넣어 두는 곳이 필요함. = 세션(Session) 어떻게 쓰는가? 중요한 정보는 서버에서만 들고 있고, 그 정보에 접속할 수 있는 세션 키만 클라이언트에 제공한다. 암호화된 정보만 브라우저에서 볼 수 있게 하는 것. → 서버에 세션 객체(session) 생성 후, uniqueInt(키)를 만들어 속성명으로 사용한다. → 속성 값에 정보를 저장하고 uniqueInt를 클라이언트로 보내 준다. 될 수 있는 한 여러 유저끼리 겹치지 않는 값으로 키를 지정한다.(서로 다른 계정으로 로그인될수도 있음) const http = require("http"); const fs = requir..


  3. 쿠키 2021.10.14

    IP주소와 브라우저 정보 외에 정확히 누가 보낸 요청인지 알고 싶다면? → 로그인을 구현하면 된다. → 쿠키와 세션이 필요함 쿠키? key(속성명) = 값(속성명) 형태의 쌍 매 요청마다 서버에 실어서 보낸다. 서버는 쿠키를 읽어서 누구인지 파악한다. 어떻게 구현할 수 있는가? writeHead : 요청 헤더에 입력하는 메서드 → Set-Cookie : 브라우저에게 쿠키를 설정하라고 명령함 const http = require("http"); http .createServer((req, res) => { console.log(req.url, req.headers.cookie); res.writeHead(200, { "Set-Cookie": "mycookie=test" }); //한 번 쿠키를 넣어 주면 ..


  4. REST API (보충) 2021.10.12

    클라이언트가 서버에 요청을 보낼 때는 주소를 통해 요청의 내용을 표현하게 된다. 예를 들어, /index.html이면 해당 파일을 보내달라는 뜻인 것처럼 서버가 이해하기 쉬운 주소가 좋다. 클라이언트가 보내는 모든 요청에 대해 서버가 응답해주지는 않는다. 어떤 요청에 어떤 응답을 보낼 지는 서버가 결정하는 것이고, 서버에게 요청하는 주소를 정하는 규칙은 REST API 를 따라간다. = 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법 HTTP 요청 메서드 GET : 서버 자원을 가져오려고 할 때 사용 (데이터 조회 등) POST : 서버에 자원을 새로 등록하고자 할 때 사용 or 뭘 쓸 지 애매할 때 PUT : 서버의 자원을 요청에 들어 있는 자원으로 치환하고자 할 때 사용 PATCH : 서버 ..


  5. *REST API 연습, RESTful?? 2021.08.09

    # 1. 학교와 학생, 성적 정보를 저장하려고 합니다. 데이터베이스를 설계해 보세요. - 학생은 반드시 하나의 학교에만 소속되어 있습니다. - 성적은 반드시 학생에게 소속되어 있으며, 한 학생에게 여러개 존재할 수 있습니다. - 매우 간단하게, 아래의 항목과 관계성만 포함하면 됩니다. - 학교 : 이름 / 학생 : 이름, 소속학교 / 성적 : 과목명, 점수, 누구의 성적인지 # 2. REST API 규칙에 따라, 아래 API의 HTTP Method와 url을 만들어 보세요. (예) 학교 상세 조회 GET /schools/1 - 학교 목록 조회 GET /schools - 학교 생성 POST /schools { "id" : 1 , { "name" : "herewego" } - id가 1인 학교 수정 PATC..


  6. REST API, URL과 URI 2021.08.05

    참고자료 및 연습문서 링크 기계가 웹을 통해서 통신할 때 정해진 규칙이 있다. REST API는 기계와 기계가 규격화된 방식으로 인터넷/웹을 통신할 수 있는 통신규약인 http를 이용한다. 이를 이용해서 통신할 때 http에게 가장 이로운 방식대로 해라~ 하고 권고하는 내용을 뜻함. 웹 서버-웹 서버, 웹 서버-웹 브라우저, 웹 서버-모바일 앱이 통신할 때 REST API를 이용할 수 있음. 기계와 기계가 http를 이용해서 통신할 때... 하나하나의 데이터를 모아 놓은 것을 Resource라고 한다. → REST API에서는 URI를 통해 표현됨 이런 데이터 전체 또는 여러 개를 식별할 수 있고, 이러한 URI를 Collection 이라고 한다. 그 중에서 한 건 한건의 데이터를 Element 라고 한..


  7. Response 2021.08.03

    Response Message의 형식 이미지 출처 : https://jsstudygroup.github.io/jsStudyBlog/posts/Http/ 이미지 출처 : https://ducmanhphan.github.io/2019-02-05-HTTP-protocol/ HTTP/1.1 200 OK → 버전. HTTP 1.1 이라는 포맷을 사용하고 있다. → HTTP status code. - 200번대는 성공했다는 뜻을 가지고 있다. 참고링크 → 좀 더 이해하기 편한 문구로 설명해 주는 부분 Content-Type 웹 서버가 응답할 때 텍스트인지 이미지인지 뭔지, 그 중에서도 어떤 타입인지 알려준다. 웹 브라우저는 이를 보고 해당 방식으로 해석해서 보여주게 된다. Content-Length 응답하는 이 컨..


  8. Request 2021.08.03

    Request Message의 형식 이미지 출처 : https://ducmanhphan.github.io/2019-02-05-HTTP-protocol/ 첫 번째 행에는 Request Line이 들어오며, 그 아래는 Request Headers라고 부른다. 그리고 그 전체를 합쳐 Request Message Header라고 부른다. 서버 쪽으로 전송해야 할 정보가 있다면 그 정보(실제 내용)를 payload라고도 하고, body라고도 하는데, 이 body는 header와 blank line으로 구분한다. 즉, Header는 요청 또는 응답에 대한 정보를 가지는 부분. body는 주고 받는 실제 데이터를 가지는 부분! * 쿠키는 부가적인 정보이므로 헤더에 저장된다. GET /doc/test.html HTTP..


  9. HTTP? 2021.07.18

    HTTP가 무엇인가? (HyperText Transfer Protocol) 참고링크 클라이언트(=웹에서는 웹 브라우저)와 서버(=웹 서버)가 있다. 클라이언트는 가게에서 물건을 사려는 손님, 서버는 그 가게의 점원이라고 생각해보자. 클라이언트가 서버에게 HTML이라는 물건을 달라고 한다면 그것이 Request, 그리고 클라이언트가 원하는 물건을 서버가 건네주는 것이 Response라고 할 수 있다. 이 때 HTML, CSS, JavaScript, 이미지와 같은 파일들은 서로가 주고 받는 컨텐츠라면, 그 컨텐츠를 주고 받기 위해서는 클라이언트와 서버가 서로 알아들을 수 있는 공통의 약속인 Message가 필요하다. 그 Message가 HTTP 이고, HTTP는 크게 request를 위한 메시지와 respo..