2021년 04월 16일
수정하기
문서 생성 2021-04-16 20:57:43 최근 수정 2021-04-16 20:58:13
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
- JavaScript로 비동기 HTTP Request를 보내는 기술
WebSocket
- HTTP 프로토콜은 TCP 연결을 기본적으로 계속 열어두지 않음 → 태생적으로 문서 전달을 위한 프로토콜이기에
- 실시간 상호작용이 힘들다
- 2011년, 양방향 통신을 지원하기 위한 WebSocket 프로토콜이 표준화됨
- Socket.io
SOP
- 동일 출처 정책(Same Origin Policy), 웹 브라우저의 핵심적인 보안 모델
- HTML 문서에서 다른 출처로 폼 제출(GET/POST Request), 링크 클릭(GET Request) 등은 허용된다.
- HTML 문서에서 다른 출처의 CSS, JavaScript, Iframe, Image, Media 등을 포함(GET Request)하는 것은 허용된다.
- 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
- 사람을 위한 정보 그래픽 디자인을 읽었다.
- 🎾 7번째 테니스 레슨이 있었다. 숙제는 "스매시"에 대해 알아오기.