티스토리 뷰
해당 포스트는 web scraping 의 이해를 돕기 위한 포스트입니다. http통신 중의 개념 중의 하나인 쿠키와 세션에 대한 내용입니다.
Cookie와 Session이 왜 필요한가?
쿠키와 세션이 왜 필요한가가 먼저 선행이 되어야 할 것 같습니다.
http는 tcp를 기반으로 만들어졌습니다. 이 통신의 약점을 보완하기 위해 쿠키와 세션의 개념이 도입된 것입니다.
그렇다면 http의 약점은 무엇일까요?
HTTP의 약점 ( Connectless, Stateless )
http의 약점이라고 할 수 있고 특징이라고 할 수 있겠습니다. 그 특징은 Connectless 와 Stateless 입니다.
Connectless 는 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버리는 기능입니다. 기본적으로는 자원 하나에 대해서 하나의 연결을 만듭니다.
예를 들어, 수십만명이 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있습니다.
다음으로는 Stateless 는 Connectless 에서 생긴 문제점으로 클라이언트의 이전 상태를 알 수가 없습니다. 이러한 HTTP의 특징을 stateless라고 합니다.
예를 들어, 클라이언트가 과거에 로그인을 성공하더라도 로그인 정보를 기억을 못하기 때문에 매번 해줘야하는 불편함이 생깁니다.
Cookie 는 어디에 쓰나요?
Cookie는 클라이언트와 서버의 상태 정보를 담고 있는 정보조각으로 클라이언트의 로컬에 저장이 됩니다. 사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있습니다. 위의 Stateless 에 생기는 문제점을 해결하기 위해서 사용됩니다.
예를 들어, 로그인의 상황에서 클라이언트가 로그인에 성공하면, 서버는 로그인 정보를 자신의 데이터베이스에 저장하고 동일한 값을 cookie형태로 클라이언트에 보냅니다. 클라이언트는 다음 번 요청때 cookie를 서버에 보내는데, 서버는 cookie 값으로 자신의 데이터베이스를 조회해서 로그인 여부를 확인할 수 있습니다.
Session은 어디에 쓰나요?
간단하게 설명하자면 쿠키와 함께 하는 동반자입니다. 쿠키는 로컬에 기반하지만 세션은 서버 측에서 관리합니다.
서버에서 클라이언트를 구분하기 위해서 세션 id를 만들어서 인증상태를 유지합니다. 이 기능으로 connectless 와 stateless를 해결할 수 있습니다. 접속 시간에 제한을 두는 timeout이 있으므로 응답이 없다면 접속이 끊어집니다.
로컬에 존재하는 쿠키와는 달리 서버에서 세션을 관리하기 때문에 많은 접속이 몰릴 경우 서버가 과부하가 걸려서 접속이 불가능한 경우가 생깁니다.
'Web Scraping(Crawling)' 카테고리의 다른 글
Beautiful Soup 과 DOM을 이용한 웹 스크래핑(web scraping) (0) | 2019.10.10 |
---|---|
DOM(Document Object Model) (0) | 2019.10.10 |
Ajax(Asynchronous JavaScript and XML) 란 (0) | 2019.10.09 |
XHR (XML Http Request) 이란 (0) | 2019.10.07 |
.bash_profile .bashrc 차이점 (0) | 2019.10.06 |
- Total
- Today
- Yesterday
- 쿠키
- OSX
- 세션
- deck.gl
- BREW
- data visualization
- Session
- Python
- IOT
- XMLHTTPRequest
- homebrew
- XHR
- Anaconda
- bashrc
- bash_profile
- cookie
- Internet of Things
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |