세션(Session)이란 HTTP 프로토콜을 사용하는 인터넷 사용자가 어떤 웹사이트를 방문할 경우, 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미합니다. 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다.
앞서 살펴본 쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장합니다.
세션은 서버 내부에 저장되며, 세션의 키값만을 클라이언트 측에 남겨둡니다.
브라우저는 필요할 때마다 이 키값을 이용하여 서버에 저장된 데이터를 사용하게 됩니다.
저장된 값은 반영구적이며, 사용자가 특정 시간동안 사용되지 않을 경우 폐기될 수 있는 정보입니다.
세션은 쿠키와 마찬가지로 연결 지향 통신을 수행하는데 기초적인 요구사항입니다.
방문자가 웹서버에 접속해 있는 상태를 하나의 단위로 보고 세션이라고 칭합니다.
동기 통신 vs 비동기 통신 차이
동기(현재 우리가 홈페이지로 구현중이었던 방식)
웹의 통신 방식 1(요청을 보내면 응답이 올 때까지 기다린다)
브라우저가 멈춘것처럼 동작(렉?!)
동기 통신 방식의 장점
코드 작성이 간단
디버깅이 쉽다(순차적으로 동시에 이루어지지 않으니 단계별로 디버깅 할 수 있다)
동기 통신 방식의 단점
비동기 방식
웹의 통신 방식 2
장점
단점
통신의 흐름을 제어하기가 쉽지 않음(동기에 비해 복잡성 ▲)
디버깅이 무조건 어렵지는 않으나 특정상황에서 어려움(콜백지옥?)
콜백함수
나중에 실행될 함수
콜백지옥?
콜백 안에 콜백 안에 콜백함수...;;
..........
콜백지옥의 문제를 조금이나 해결하기 위해 나온 문법
promise
astnc/await
비동기 통신 방식 사용하는 스크립트 문법 정의한 것들
ajax(아작스), 액시오스, 패치스 ..
ajax(아작스/에이잭스)- 제이쿼리에서 기능 제공
ajax -> 비동기통신을 하기 위해 자바스크립트와 xml 기술을 활용하여
만든 방법
응답으로 받는 데이터의 형식
xml -> 태그로 구성된 문서 확장자
json -> 객체형태로 구성된 문서 확장자
ajax를 통해 응답으로 받는 데이터의 형식
-> xml , json , text , html, ~~~
ajax 문법 예시
$.ajax({
url : '/url/home/test',
type : 'GET',
data : {
test1 : '비동기테스트'
},
dataType : '',
success : function (){
} ,
error : function(){
}
})
}
비동기 문법
''말고 백틱으로 써도 문자처럼 인식?
\ el표기 ,...
세션이란?
웹에서 사용자의 상태 정보를 서버에 일시적으로 저장하기 위한 방식
http는 기본적으로 상태 유지를 안한다
세션으로 사용하는 상황들
로그인 유지, 장바구니
세션이 생성되는 시점이 있다.
요청을 받으면(서버에 접속) 세션이라는 영역이 생겨난다
해당 영역을 찾아갈 수 있는 세션ID(서버가 생성)가 생겨난다
생성된 세션ID가 클라이언트(브라우저)에게 전달(쿠키)된다
클라이언트는 다음 요청부터 쿠키에 있는 세션 id를 같이 보낸다
서버는 세션id를 통해 사용자를 식별 후 저장하고 있던 정보를 제공한다
----> 세션의 동작 흐름
위에 처럼 보면 어렵게 보이지만(복잡하게 보이지만)
체감상 요청 자체에 세션이 들어있는 것처럼 느껴진다
서버
상대적으로는 쿠키보다 보안에 강하다
서버에 데이터를 저장
데이터베이스도 가능
사이즈의 한계가 있다(서버의 용량에 따라 달라진다)
개발자가 특정 시점을 정해놓고 없애지 않으면 일정 시간이 지났을때
사라짐
쿠키
클라이언트에 데이터를 저장
보안에 취약함
개발자가 정해놓은 시점에 사라진다
사용자가 시점을 정하기도 한다