Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 순환신경망
- JSP
- 자바
- 정보처리기사필기
- 자바 실습
- 컴퓨터비전
- 컴퓨터구조
- SQL
- CSS
- JDBC
- 연습문제
- 자바스크립트
- 데이터분석
- 중학1-1
- 딥러닝
- 데이터베이스
- 디버깅
- html/css
- 혼공머신
- JSP/Servlet
- 중학수학
- 파이썬
- c언어
- rnn
- 상속
- 개발일기
- 머신러닝
- 정보처리기사실기
- 오블완
- 자바스크립트심화
Archives
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
[Spring반] 중간시험 28 - Web 이론 시험 및 문제 풀이 8 : 문제 17~18번 <쿠키와 세션 그리고 페이지 이동 방식> 본문
개발 포트폴리오/수료증 및 시험
[Spring반] 중간시험 28 - Web 이론 시험 및 문제 풀이 8 : 문제 17~18번 <쿠키와 세션 그리고 페이지 이동 방식>
huenuri 2024. 12. 10. 19:38웹 시험의 마지막 문제들을 풀어보려고 한다.
Web 이론 시험 여덟 번째
문제 17번
쿠키와 세션을 사용하는 가장 주된 이유와 차이점을 기술하시오.
쿠키와 세션을 사용하는 이유
웹은 기본적으로 무상태(stateless) 프로토콜인 HTTP를 사용한다. 이 때문에 클라이언트와 서버 간의 상태 정보를 유지하지 못한다. 이를 해결하기 위해 쿠키와 세션을 사용해 클라이언트의 상태를 관리하고, 사용자별 맞춤 서비스를 제공하는 데 활용한다.
쿠키와 세션의 차이점
구분 | 쿠키 | 세션 |
저장 위치 | 클라이언트(브라우저)에 저장됨 | 서버에 저장되고, 클라이언트에는 세션 ID만 저장됨 |
보안성 | 상대적으로 낮음(사용자가 쿠키를 수정하거나 탈취될 가능성 있음) | 상대적으로 높음(중요 정보는 서버에 저장, 클라이언트에 민감 정보 노출 안 됨) |
유효 기간 | 설정된 만료 기간까지 유지됨(브라우저를 닫아도 유지 가능) | 브라우저를 닫으면 기본적으로 소멸됨 |
속도 | 클라이언트에서 직접 데이터 처리 -> 빠름 | 서버와의 통신이 필요 -> 상대적으로 느림 |
사용 목적 | 사용자 인증 유지, 간단한 상태 정보 저장(예: 장바구니, 언어 설정 등) | 사용자 세션 관리, 민감한 데이터 관리 |
용량 제한 | 보통 4KB로 제한됨 | 제한 없음(서버 스토리지에 따라 달라짐) |
요약
- 쿠키 : 클라이언트 측에 저장되며, 간단한 데이터를 관리하는 데 유용하다.
- 세션 : 서버 측에 저장되어 보안이 중요하거나 민감한 데이터 처리를 필요로 하는 경우 사용된다.
둘을 적절히 조합하면 사용자 경험과 보안을 효과적으로 관리할 수 있는 것이다.
쿠키와 세션을 사용하는 간단한 로그인 프로젝트 예제
프로젝트 개요
- 로그인한 사용자의 정보를 세션으로 관리
- 사용자의 이름 정보를 쿠키로 저장해 다음 접속 시 자동으로 표시
- Flask(파이썬 웹 프레임워크)를 사용해 구현
app.py
login.html
welcome.html
플라스크 실행하기
그냥 아무거나 쓰면 로그인 실패 메시지가 뜬다.
제대로 된 아이디와 비밀번호를 쓰면 이렇게 환영 메시지가 뜬다.
주요 기능
- 쿠키 : 로그인 시 사용자의 이름을 클라이언트에 저장해 다음 로그인 시 입력 편의성 제공
- 세션 : 사용자의 로그인 상태를 서버에서 유지
이 프로젝트는 쿠키와 세션의 역할을 이해하고 실제로 사용하는 방식을 보여주는 간단한 예시이다.
문제 18번
페이지 이동 방식 중 redirect와 forward의 차이점을 기술하시오.
Redirect와 Forward의 차이점
웹 애플리케이션에서 페이지 이동 방식 중 Redirect와 Forward는 클라이언트가 다른 페이지로 이동하도록 하는 방법이지만, 동작 방식과 사용 목적에 차이가 있다.
1. Redirect (리다이렉트)
동작 방식
- 클라이언트의 브라우저에 다른 URL로 이동하라고 응답을 보냄
- 브라우저는 서버로부터 받은 새 URL로 새로운 요청을 보냄
- 클라이언트-서버 간 두 번의 요청/응답이 발생함
특징
- 클라이언트의 브라우저 주소창이 이동한 페이지의 URL로 변경됨
- 새 요청이 발생하기 때문에 이전 요청 데이터(예: POST 데이터)는 사라지고, 새로운 요청이 시작됨
- 상태 코드 3xx(주로 302 또는 301)가 사용됨
사용 예시
- 로그인 후 홈 페이지로 이동.
- 페이지나 리소스가 이동된 경우(예: 새 URL로 리다이렉트).
- 성공 메시지를 표시한 뒤 다른 페이지로 이동.
장점
- 브라우저의 URL이 변경되어 사용자가 이동을 명확히 인지함
- 이전 요청과 완전히 독립된 새 요청이므로 상태가 초기화됨
단점
- 네트워크 요청이 두 번 발생하여 성능 저하 가능
- 추가적인 요청-응답 과정으로 처리 시간이 증가
2. Forward (포워드)
동작 방식
- 클라이언트 요청을 서버가 처리한 뒤, 같은 요청 내에서 다른 페이지로 요청을 전달
- 브라우저는 서버가 전달한 결과를 받아 출력하지만, 브라우저의 주소창은 변경되지 않음
- 클라이언트-서버 간 한 번의 요청/응답만 발생함
특징
- 클라이언트의 브라우저 주소창이 변경되지 않음
- 요청 데이터(예: POST 데이터)가 그대로 유지됨
- 주로 서버 내부에서 이동하므로, 클라이언트는 이동 사실을 알 수 없음
사용 예시
- 요청 데이터를 유지하며 다른 페이지에서 결과를 처리할 때(예: 로그인 실패 시 다시 로그인 페이지로 이동)
- 특정 요청을 다른 서블릿 또는 JSP로 넘겨 처리를 위임할 때
- 서버 내부에서 요청을 처리하는 경우(예: 템플릿 렌더링)
장점
- 클라이언트-서버 간 요청이 한 번만 발생해 성능에 유리
- 요청 데이터가 유지되어 재사용 가능
단점
- 브라우저 주소창이 변경되지 않아 사용자가 이동 사실을 알기 어려움
- 클라이언트의 요청에 따라 독립적으로 처리하기 어려움(이전 상태와 연결됨)
비교 표
구분 | Redirect | Forward |
주소창 변경 여부 | 변경됨 | 변경되지 않음 |
요청/응답 횟수 | 두 번의 요청/응답 발생 | 한 번의 요청/응답 발생 |
데이터 유지 여부 | 요청 데이터가 초기화됨 | 요청 데이터가 유지됨 |
사용 목적 | 새로운 페이지로 이동 | 서버 내에서 요청을 처리하고 결과 반환 |
사용자 인지 여부 | 이동을 인지할 수 있음 | 이동을 인지할 수 없음 |
요약
- Redirect는 브라우저 주소를 변경하며 새로운 요청을 시작해 페이지를 이동
- Forward는 서버 내부에서 요청을 전달하며 클라이언트의 요청 데이터와 연결된 상태로 페이지를 이동
상황에 따라 적절한 방식을 선택하는 것이 중요하다.
학습을 마치고
마지막 문제는 JDBC 문제인데 이건 아직 공부하지 않은 내용이니 나중에 풀어보기로 했다. 이렇게 해서 이론 문제 20문제 중 19문제를 풀었다. 한 문제는 문제를 쓰지는 않고 다른 문제와 중복이 되어 따로 기록하지는 않았다.
이어서 실습 문제를 풀어보겠다.