CORS는 교차 출처 리소스 공유
라는 뜻으로, 서로 다른 도메인에서 리소스 요청을 제한하는 것을 의미합니다.
기본적으로 브라우저는 다른 출처의 자바스크립트의 실행을 막습니다. 이는 악의적인 스크립트의 실행으로 인한 정보 탈취 등을 막기 위함입니다. 브라우저는 URL, 프로토콜, 포트 및 호스트 명 중 하나라도 다를 경우, 브라우저는 교차 출처라고 간주합니다.
이런 에러를 해결하기 위해, Access-Control-Allow-Origin
를 헤더를 설정하여 해결할 수 있습니다.
JWT는 주고 사용자의 인증 혹은 인가 정보를 JSON 형식으로 서버와 클라이언트 간에 안전하게 주고받기 위해 사용되는 매커니즘입니다.
JWT은 Base64로 인코딩
되어있습니다.
JWT은 Header, Payload, Signature의 구조로 되어 있으며, 세 부분을 점(dot)으로 구분합니다. Header 부분에는 토큰의 유형과 서명 알고리즘이, Payload에는 사용자의 인증 인가 정보가, 마지막 Signature 부분에는 Header와 Payload가 비밀 키로 서명되어 작성됩니다.
JWT을 사용하면, 쿠키나 세션을 사용하여 인증/인가를 구현할 때와 비교하면, 사용자의 세션을 DB나 캐시에 저장하여 매번 쿠키로 넘어온 사용자 데이터를 조회하지 않아도 되기 때문에
, 인프라 비용을 절감
할 수 있고 CORS 문제에서 벗어날 수 있다는 장점
이 있습니다.
그러나, 사용자가 여러 기기에 로그인한 정보를 띄워주고, 특정 기기에서 로그아웃하는 기능을 구현하기에는 어렵다는 한계가 있습니다. 또한, JWT에 저장된 데이터는 누구나 쉽게 열람할 수 있기에, 보안 면에서 더욱 각별한 주의가 필요합니다.
RESTful API란, REST의 기본 원칙
을 준수해서 설계된 API를 뜻합니다.
REST API는 URL로 표현되는 자원
, HTTP 요청 메서드로 표현되는 행위
,데이터를 어떻게 표현할 것인가를 나타내는 표현
의 세 가지 요소로 구성됩니다.
RESTful API에서 가장 중요한 기본 원칙으로, 첫 번째로는 URL은 리소스를 표현해야 한다는 것입니다. 유저라는 리소스를 나타낸다면, /users라는 식으로 작성해야 하고, 동사나 행동을 나타내는 단어(getUsers/deleteUsers)를 포함해서는 안됩니다.
두 번째로는 리소스에 대한 행위는 HTTP 요청 메서드로 표현한다는 것입니다.
GET, POST, PUT, PATCH, DELETE의 다섯 가지 메서드를 사용하는 방식으로 동작합니다.
그리고 데이터의 표현 방식은 일반적으로 XML과 JSON 형식이 있습니다.
PATCH와 PUT 모두 기존에 존재하는 리소를을 업데이트(변경)하는 메서드지만, PUT은 완전히 새로운 리소스로 대체할 때 사용되고, PATCH는 기존에 존재하던 리소스의 일부분을 수정할 때 사용됩니다.
화면의 레이아웃이 변경되었을 때는 리플로우와 리페인팅이 발생합니다. 렌더링 최적화를 위해서는 리플로우를 최소화해야 합니다.