HTTP는 통신 시 정보를 한 번씩 주고받은 후 바로 끊는 형태로 처리함. 이렇게 상태 정보를 저장하지 않는 통신 형태를 stateless 라고 하며 HTTP는 대표적인 무상태 프로토콜이다.
stateful은 서버가 클라이언트의 이전 상태를 보존한다는 의미. stateless는 서버가 클라이언트의 이전 상태를 보존하지 않는다는 의미.
connectionless 는 클라이언트가 서버에 요청을 하고 응답을 받으면 바로 TCP/IP 연결을 끊어 연결을 유지하지 않는 것. 이를 통해 서버의 자원을 효율적으로 관리하고, 수많은 클라이언트의 요청에도 대응할 수 있다.
HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 경우,
그 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다.
HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다.
아이디와 비밀번호 저장 및 팝업창
일정 시간 동안 같은 사용자로부터 들어오는 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술이다. 여기서 일정 시간은 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 웹 브라우저를 종료하여 연결을 끝내는 시점을 말한다.
웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장한다.
웹 서버의 저장되는 쿠키(=세션 쿠키)
브라우저를 닫거나, 서버에서 세션을 삭제했을 때만 삭제가 되므로, 쿠키보다 비교적 보안이 좋다.
저장 데이터에 제한이 없다. (서버 용량이 허용하는 한에서)
각 클라이언트에 고유 Session ID를 부여한다. Session ID로 클라이언트를 구분해 각 요구에 맞는 서비스를 제공
세션이 쿠키에 비해 보안이 높은 편이나 쿠키를 사용하는 이유는 세션은 서버에 저장되고, 서버의 자원을 사용하기에 서버 자원에 한계가 있고, 속도가 느려질 수 있기 때문에 자원관리 차원에서 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하여 서버 자원의 낭비를 방지하며 웹사이트의 속도를 높일 수 있다.
Axios는 Promise 기반의 HTTP 클라이언트 라이브러리로 브라우저와 Node.js 환경 모두에서 사용할 수 있습니다. Axios는 fetch보다 더 많은 기능을 제공하며, 그 사용성과 편리성으로 인해 많은 개발자들 사이에서 인기가 높습니다.
import axios from 'axios';
async function getUserData() {
try {
const response = await axios.get('https://api.example.com/user');
return response.data;
} catch (error) {
throw new Error('데이터를 가져오는 중 오류가 발생했습니다.');
}
}
장점
간편한 오류 처리: HTTP 상태 코드가 200번대가 아닐 경우 자동으로 오류를 발생시킵니다.
고급 기능 지원: 요청 및 응답 인터셉터, 요청 취소, 자동 JSON 변환 등 다양한 고급 기능을 제공합니다.
브라우저와 Node.js 지원: 동일한 코드로 브라우저와 서버 환경에서 모두 사용 가능합니다.
단점
추가 설치 필요: 라이브러리를 설치하고 의존성을 관리해야 합니다.
용량: Fetch API보다 약간 더 많은 용량을 차지합니다.
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://127.0.0.1:5500/") // 허용할 출처 (프론트엔드 주소)
.allowedMethods("*") // 모든 HTTP 메서드 허용 (GET, POST, PUT, DELETE 등)
.allowedHeaders("*") // 모든 요청 헤더 허용
.allowCredentials(true); // 쿠키, 세션 정보 허용
}