Skip to content
On this page

2021년 04월 16일

수정하기
문서 생성 2021-04-16 20:57:43 최근 수정 2021-04-16 20:58:13
On this page

Note

쿠키

  • 웹 브라우저에 저장되어 있는 키-값 형식의 데이터
  • 웹 서버가 Response를 보낼 때 Set-Cookie 헤더를 통해 생성
    • Cookie 헤더를 받은 웹 브라우저는 저장장치에 쿠키 데이터를 생성하고 저장
    • 이후 웹 브라우저가 Request를 보낼 때, 웹 서버의 도메인에 해당되는 모든 쿠키 값이 Cookie 헤더를 통해 함께 전달된다.

세션

  • 쿠키는 쉽게 조작이 가능하기 때문에 인증 방식으로 사용하기에 위험하다.
  • 쿠키의 단점을 보완하기 위해 세션이란 개념이 도입되었음
  • 웹 브라우저에게 클라이언트를 고유하게 나타내는 값을 쿠키로 갖게 한다. → 세션 쿠키 (session_id - 임의의 값으로 생성된다.)

동기와 비동기

Thread

  • 대부분의 OS는 멀티 태스킹(Multi-tasking) 또는 멀티 프로세싱(Multi-processing)을 지원
    • 아주 짧은 시간 단위로 각 프로세스의 코드를 조금씩 번갈아가면서 실행(Context Switch)하면서 여러 프로세스가 동시에 실행되는 것처럼 보이게 한다.
  • 한 프로세스는 다수의 쓰레드(Thread)를 가질 수 있게 한다.
    • Thread: 프로세스 안의 작은 프로세스, 함수 같은 코드 블럭
  • 멀티 쓰레딩(Multi-Threading): 각 쓰레드의 코드를 조금씩 번갈아가며 실행하는 것
  • 많은 플랫폼의 GUI 프로그램들은 보통 하나의 Main Thread(UI Thread)를 가지며 UI 작업 외의 처리를 위한 다수의 Background Thread를 가진다.

동기

  • 웹브라우저의 JavaScript는 Main Thread에서 작동
  • Main Thread에서 작동하는 코드를 동기 또는 블록킹(Blocking)코드라 한다.

비동기

  • Ajax Request, Non-blocking 으로 작동하는 코드
  • Background Thread에서 Request와 Response를 주고 받은 후 Main Thread에서 실행할 코드를 콜백이나 핸들러 형태로 제공

Promise

  • 비동기 처리의 콜백 지옥(Callback Hell)이라 불리는 가독성 떨어지는 코드를 해결하기 위해 ES6에서 표준으로 자리잡은 객체
    • 추후 어떤 데이터를 가지고 해결될 것이라는 약속을 나타냄
    • 약속에 대해 성공할 경우의 콜백, 실패할 경우의 콜백 등을 등록 가능

비동기에 대한 오해

  • 콜백을 받는 함수나 Promise를 이용한 함수가 무조건 비동기로 처리된다는 오해를 할 수 있음
  • 코드가 동기/비동기로 실행되는지의 여부는 콜백이나 Promise와 같은 형태에 달려 있는 것이 아니라, 실제 그 코드가 어느 쓰레드에 실행되는지에 달려있다.

Ajax

WebSocket

  • HTTP 프로토콜은 TCP 연결을 기본적으로 계속 열어두지 않음 → 태생적으로 문서 전달을 위한 프로토콜이기에
    • 실시간 상호작용이 힘들다
  • 2011년, 양방향 통신을 지원하기 위한 WebSocket 프로토콜이 표준화됨
  • Socket.io

SOP

  • 동일 출처 정책(Same Origin Policy), 웹 브라우저의 핵심적인 보안 모델
  1. HTML 문서에서 다른 출처로 폼 제출(GET/POST Request), 링크 클릭(GET Request) 등은 허용된다.
  2. HTML 문서에서 다른 출처의 CSS, JavaScript, Iframe, Image, Media 등을 포함(GET Request)하는 것은 허용된다.
  3. HTML 문서에서 다른 출처로 XHR (Ajax Request)을 보내는 것은 거부된다.

출처

  • 프로토콜, 도메인(호스트), 포트를 모두 포함 , 즉 동일 출처라면 셋 모두가 동일해야 함

CSRF

  • 사이트 간 요청 위조(Cross-site Request Forgery)
  • 위조를 막으려면 GET 메소드를 통해 서버의 데이터를 변경하는 것에 대해 라우팅 하지 않아야 한다.
    • 라우팅 처리는 POST 메소드 등으로 설정하는 것이 바람직
    • 폼 제출의 경우에는 다른 출처로의 POST 메소드 요청이 허용되기 때문에 메소드를 받는 라우팅에서 Referer 헤더를 확인해 출처리르 비교하면 위조된 요청을 막을 수 있다.

JSONP

CORS

  • 교차 출처 자원 공유, CORS(Cross Origin Resource Sharing)
    • 원칙적으로 SOP를 제어할 수 있는 매커니즘
  • Request가 일어나기 전 웹 서버가 CORS를 지원하고 있다고 응답해주면 정상적인 Request, Response가 교환됨
  • 자사의 API를 공개하려는 웹 서비스에서는 CORS를 지원하는 것이 API 사용자들에게 Ajax를 이용할 수 있도록 지원하는 것

log

LINKS TO THIS PAGE