Computer Science
CORS (Cross-Origin Resource Sharing)
1. CORS 란 프로젝트를 하면서 API 서버와 통신을 할 때 마주치게 되는 이슈 중의 하나가 이 CORS 정책 위반 에러다. CORS는 Cross-Origin Resource Sharing 의 줄임말로, '교차 출처 리소스 공유' 라고 해석한다. 이렇게 단순히 직역을 하게 되면 무슨 의미인지 도통 감이 안오는데 내용을 자세히 알게되면 이 말을 충분히 이해할 수 있다. 우선 단어를 하나씩 쪼개서 알아보기로 하자. 1.1 Cross-Orgin 이라는 게 무슨 뜻이지? 우선 Origin은 출처인데, 이는 서버의 위치라고 생각할 수 있다. 즉 URL을 말하는 것이고, 이 URL은 Protocol과 Host, path와 포트 번호로 이루어져 있다. 포트 번호는 출처에서 생략이 가능한데, 이는 프로토콜의 기본 ..
인증과 인가
인증과 인가란 웹 서비스를 만들면서 서버와 데이터를 주고받는 기본적인 기능들을 구현하게 되는데, 이때 인증과 인가에 대한 개념을 모르고 넘어간다면 서버와의 통신이 막연하고 어렵게 느껴질 수 있다. 그래서 인증과 인가라는 개념을 먼저 정리해보려고 한다. 사전적 의미를 찾아보니 인증(Authentication)이란 어떠한 문서나 행위가 정당한 절차로 이루어졌다는 것을 공적기관이 증명한다는 뜻이고, 인가(Authorization)란 대상의 옳음을 밝혀 인정한다는 뜻이다. 이 두가지의 개념은 출입증에 비교하면 쉽게 이해할 수 있다. 방문자가 회사 건물에 방문했다고 가정했을 때, 1) 인증은 방문자가 자신이 회사 건물에 들어갈 수 있는지 확인을 받는 과정이다. 2) 인가는 방문자가 회사 건물에 방문했을 때, 어떤..
SPA (Single Page Application)
SPA를 이해하려면 우선 서버와 클라이언트의 관계를 이해해야 한다. User가 서버에 html 을 요청하면 서버에서 모든 html을 보내주었던 방식이 전통적인 서버 사이드 방식이다. 페이지를 로딩할 때 마다 서버로부터 리소스를 전달받아 렌더링을 하면 속도가 느려지고 트래픽도 낭비된다. 그래서 최근에는 클라이언트 사이드 방식으로 우선 애플리케이션을 브라우저에 로드한 다음 필요한 데이터만 서버에서 전달받아 다시 렌더링을 한다. 이러한 클라이언트 사이드 방식은 SPA에서 사용되는 방식이고, SPA 구현에 리액트가 사용될때 라우터가 필요하다. 라우터를 이해하기 위해 먼저 SPA가 무엇인지 알아보겠다. 1. SPA 란 SPA는 Single Page Application 의 약자로, 페이지가 1개인 어플리케이션이란..
JWT(Json Web Token)
인증과 인가 글에서 웹 서비스 인증 방법으로 4가지를 간단하게 소개했었는데, 그중 토큰 기반 인증은 최근 모던 웹서비스에서 가장 많이 사용되는 방식이다. 토큰을 기반으로 하는 인증 시스템을 사용하는 데에는 여러 이유가 있다. 서버는 무상태성(stateless)의 속성을 가지고 있는데, 이는 클라이언트에서 전달받은 상태를 저장하지 않는다는 것이다. 상태 정보를 저장하지 않기 때문에 서버에서는 클라이언트에서 보내는 요청만으로 작업을 수행하고 마친다. 이러한 서버의 무상태성으로 서비스가 커지고 사용 유저가 많아지더라도 그에 맞춰 서버도 확장할 수 있게 되었다. 또한 토큰기반 인증 시스템은 로컬 영역에 유저 정보를 저장하지 않기 때문에 session/cookie 시스템보다 보안을 높일 수 있다. 더불어 모바일 ..
쿠키와 스토리지 (cookie & storage)
서버의 비연결성과 무상태라는 특성때문에 연결이 끊어지면 정보가 없어진다. 1. HTTP 쿠키 1.1 쿠키란 서버가 사용자의 웹 브라우저(클라이언트)에 전송하는 작은 데이터 조각으로 볼수 있다. 쿠키는 유저식별과 상태관리에 사용되고 있는 기능이다. 웹 사이트가 유저의 상태를 관리하기 위해 유저의 컴퓨터 상에 일시적으로 데이터를 저장해 두고, 다음에 그 유저가 동일한 웹사이트에 액세스 했을때 이전에 발행한 쿠키를 송신받을수 있다. 쿠키는 주로 3가지 목적으로 사용된다. 정보관리: 서버에 저장할 로그인, 장바구니, 게임 점수 등의 정보 관리 개인화: 사용자 선호, 테마 등의 세팅 트래킹: 사용자 행동을 기록 및 분석 (추천 아이템 또는 광고 등) 도메인 별로 따로 저장이 되고, 동일한 서버에 재 요청시에 저장..
TCP/ IP
1. TCP / IP 란 TCP/IP 가 나타난 이유는 컴퓨터 간의 통신을 위해서였다. 이는 컴퓨터와 컴퓨터간의 지역네트워크(LAN) 혹은 광역네트워크(WAN)에서 원할한 통신을 가능하도록 하기 위한 통신규약으로 정의할 수 있다. 인터넷으로 연결된 수많은 컴퓨터와 통신을 위해서 TCP/IP를 사용하는 이유는 그 개방성에 있다. 하드웨어, 운영체제, 접속매체에 관계없이 동작할 수 있다는 점에서 핵심적이다. HTTP, FTP, SMTP 등 TCP를 기반으로 하여 만들어졌고, 이러한 많은 수의 애플리케이션 프로토콜들이 IP 위에서 동작하기 때문에 TCP/IP 라고 부른다. 이렇게 두 방식의 조합을 통해 인터넷 데이터 통신을 하는 것을 묶어 TCP/IP라고 부른다. 오늘날 인터넷 통신의 대부분은 패킷 통신을 기..
OSI 7 Layer
OSI는 Open System Interconnection의 약자로, '개방형 시스템 상호연결'이라는 말이다. 이는 시스템 설계나 동작원리가 공개되어 있고, 보편적으로 인정받거나 표준화된 시스템을 상호연결하는 것을 말한다. 통신할 때의 연결과정을 7단계로 나누어 놓은것이고, 각각의 계층에 따라 역할이 구분되어 있기 때문에 7 계층이라고 하는 것이다. 2개의 시스템이 통신을 한다고 할 때 7가지 단계의 과정을 거친다는 것으로 말할 수 있다. OSI 7 계층은 네트워크를 구상할 때 참조하는 모델이다. 이를 꼭 따를 필요는 없으나 다르게 만들었을 경우 일반 네트워크와의 통신을 보장할 수 없다. 1. physical layer (1 layer) 물리 계층은 말 그대로 하드웨어의 전송 기술로 이루어져 있으며, 전..