본문 바로가기
PRACTICE/Basic

[Flask] Cookies 예제

by 1005 2020. 9. 24.

 

 

 

Flask – Cookies - Tutorialspoint

Flask – Cookies A cookie is stored on a client’s computer in the form of a text file. Its purpose is to remember and track data pertaining to a client’s usage for better visitor experience and site statistics. A Request object contains a cookie’s a

www.tutorialspoint.com

 

 

웹사이트는 쿠키를 통해 접속자의 장치를 인식하고,

접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장한다. 

 

 

< 폴더 경로 >

 

 

< app.py >

 

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
from flask import Flask 
from flask import render_template
from flask import request, make_response
 
app = Flask(__name__)
 
@app.route('/'
def index():
   return render_template('index.html'# 로그인 페이지
 
@app.route('/setcookie', methods = ['POST''GET']) 
def setcookie():
   if request.method == 'POST':  # request 객체는 post형식으로 값을 받음.
       user = request.form['nm'# html에서 submit하는 순간 user라는 변수에 값이 받아짐.
   
   resp = make_response(render_template('readcookie.html')) # 쿠키 생성 페이지
   resp.set_cookie('userID', user)
   
   return resp
 
@app.route('/getcookie'# 쿠키 출력 페이지 
def getcookie():
   name = request.cookies.get('userID'# 쿠키로 받은 아이디를 name에 저장. 
   return '<h1>welcome '+name+'</h1>'
 
if __name__ == '__main__':
   app.run(host='0.0.0.0', port = 80, debug = True)
 

 

< index.html >

 

1
2
3
4
5
6
7
8
9
<html>
   <body>
      <form action = "/setcookie" method = "POST">
         <p><h3>Enter userID</h3></p>
         <p><input type = 'text' name = 'nm'/></p> <!--이름 압력-->
         <p><input type = 'submit' value = 'Login'/></p> <!--로그인을 하기위한 버튼-->
      </form>
   </body>
</html>

 

< readcookie.html >

 

파일 안에 내용은 없지만

브라우저에서 쿠키 값을 다시 읽고 표시하는

getcookie()에 대한 하이퍼링크가 포함되어있다.

 

 

 

Login버튼을 누르면 localhost/setcookie로 이동한다. 

setcookie함수가 실행되면서 쿠키가 생성된다.

 

 

 

                     # 쿠키는 클라이언트 쪽에 저장함. 보안상에 문제로 잘 사용하지 않음. 

                     # 보안문제 = 내 pc에 있는 쿠키값을 훔쳐서 다른 pc에서 타인이 로그인 가능한 문제.

                     # 쿠키를 클라이언트 쪽에 주지않고 정보를 클라이언트에게 줄 수 있는 방법을 고민하다

                     # 세션이라는 개념이 생겨남. 세션은 서버쪽에서 가지고 있음. 

 

                     # 세션기능: 서버쪽에 파일처럼 메모리 공간을 만든 후 (tcp/ip는 원래 세션기능이 없음.) 

                     # 로그인 했을 때 일정 시간동안 연결을 유지시켜주는 기능. 

                     # 일정 시간이 지나면 메모리 공간 없애서 보안 유지. 

 

댓글