Bird
Raised Fist0
Flaskframework~20 mins

Setting and reading cookies in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Cookie Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output of this Flask route when setting a cookie?

Consider this Flask route that sets a cookie named user with value alice. What will the response headers include?

Flask
from flask import Flask, make_response
app = Flask(__name__)

@app.route('/')
def index():
    resp = make_response('Hello World')
    resp.set_cookie('user', 'alice')
    return resp
AThe response will include a Set-Cookie header with 'user=alice'
BThe response will include a Set-Cookie header with 'user=alice; Max-Age=3600'
CThe response will not include any Set-Cookie header
DThe response will include a Set-Cookie header with 'user=alice; HttpOnly; Secure'
Attempts:
2 left
💡 Hint

Check how set_cookie works by default without extra parameters.

❓ state_output
intermediate
2:00remaining
What value does the Flask route read from the cookie?

Given this Flask route that reads a cookie named session_id, what will be returned if the cookie is not set?

Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/read')
def read_cookie():
    session = request.cookies.get('session_id', 'none')
    return f'Session: {session}'
AKeyError exception
BSession:
CSession: None
DSession: none
Attempts:
2 left
💡 Hint

Look at the default value provided to get method.

📝 Syntax
advanced
2:00remaining
Which option correctly sets a cookie with a 1-hour expiration?

Choose the correct Flask code snippet that sets a cookie named token with value abc123 that expires in 3600 seconds.

Aresp.set_cookie('token', 'abc123', maxage=3600)
Bresp.set_cookie('token', 'abc123', expires=3600)
Cresp.set_cookie('token', 'abc123', max_age=3600)
Dresp.set_cookie('token', 'abc123', expire=3600)
Attempts:
2 left
💡 Hint

Check the exact parameter name for cookie expiration in Flask's set_cookie.

🔧 Debug
advanced
2:00remaining
Why does this Flask code fail to read the cookie?

Given this Flask route, why does it always print Cookie not found even if the user cookie is set?

Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/check')
def check_cookie():
    if 'User' in request.cookies:
        return f"User: {request.cookies['User']}"
    else:
        return 'Cookie not found'
ACookies must be accessed with get() method, not by key
BCookie keys are case-sensitive; 'User' is not the same as 'user'
CFlask does not support reading cookies from request
DThe cookie is not sent because the route is missing @app.before_request
Attempts:
2 left
💡 Hint

Check the case of the cookie key used in the condition and in the return statement.

🧠 Conceptual
expert
2:00remaining
What happens if you set a cookie with the Secure flag but access the site over HTTP?

In Flask, if you set a cookie with secure=True, what will happen when the client accesses the site over plain HTTP?

AThe cookie will not be sent by the browser on HTTP requests
BThe cookie will be sent normally on HTTP and HTTPS
CThe cookie will be deleted immediately by the browser
DThe server will reject the request due to missing secure cookie
Attempts:
2 left
💡 Hint

Think about what the Secure flag means for cookies in browsers.

Practice

(1/5)
1. What is the main purpose of using cookies in a Flask web application?
easy
A. To increase the speed of the Flask server
B. To run server-side scripts automatically
C. To change the HTML structure of a webpage
D. To store small pieces of data on the user's browser for later use

Solution

  1. Step 1: Understand what cookies do

    Cookies store small data on the user's browser to remember information like login status or preferences.
  2. Step 2: Identify the correct purpose in Flask context

    Flask uses cookies to save data on the client side, not to run server scripts or change server speed.
  3. Final Answer:

    To store small pieces of data on the user's browser for later use -> Option D
  4. Quick Check:

    Cookies save data on browser = C [OK]
Hint: Cookies save data on browser, not server tasks [OK]
Common Mistakes:
  • Thinking cookies run server scripts
  • Confusing cookies with server speed optimization
  • Believing cookies change webpage HTML structure
2. Which of the following is the correct way to set a cookie named user_id with value 123 in Flask?
easy
A. response.cookies.set('user_id', 123)
B. response.set_cookie('user_id', '123')
C. request.set_cookie('user_id', '123')
D. request.cookies.set('user_id', '123')

Solution

  1. Step 1: Identify the correct method to set cookies

    Cookies are set on the response object using set_cookie method.
  2. Step 2: Check the value type and object used

    The value must be a string, so '123' is correct. Also, setting cookies on request object is invalid.
  3. Final Answer:

    response.set_cookie('user_id', '123') -> Option B
  4. Quick Check:

    Use response.set_cookie with string value = A [OK]
Hint: Use response.set_cookie with string values [OK]
Common Mistakes:
  • Using request object to set cookies
  • Passing integer instead of string as cookie value
  • Calling set_cookie on request.cookies
3. Given this Flask route code, what will be the output when accessing /get_cookie after setting the cookie username to alice?
from flask import Flask, request, make_response
app = Flask(__name__)

@app.route('/set_cookie')
def set_cookie():
    resp = make_response('Cookie Set')
    resp.set_cookie('username', 'alice')
    return resp

@app.route('/get_cookie')
def get_cookie():
    user = request.cookies.get('username')
    return f'User: {user}'
medium
A. User: alice
B. User: None
C. User: username
D. Error: Cookie not found

Solution

  1. Step 1: Understand cookie setting route

    The /set_cookie route sets a cookie named 'username' with value 'alice' on the response.
  2. Step 2: Understand cookie reading route

    The /get_cookie route reads the 'username' cookie from the request and returns it in the string.
  3. Final Answer:

    User: alice -> Option A
  4. Quick Check:

    Cookie 'username' = 'alice' read correctly = A [OK]
Hint: Set cookie first, then read with request.cookies.get() [OK]
Common Mistakes:
  • Expecting cookie value before setting it
  • Confusing cookie name with value
  • Assuming error if cookie missing without checking
4. Identify the error in this Flask code snippet that tries to read a cookie named session_id:
from flask import Flask, request
app = Flask(__name__)

@app.route('/check')
def check():
    session = request.cookies['session_id']
    return f'Session: {session}'
medium
A. Should use response.cookies instead of request.cookies
B. Cookie name must be capitalized as 'Session_id'
C. Using square brackets to access cookie may cause KeyError if cookie missing
D. Flask does not support reading cookies

Solution

  1. Step 1: Check how cookie is accessed

    The code uses request.cookies['session_id'] which raises KeyError if cookie is missing.
  2. Step 2: Suggest safer method

    Using request.cookies.get('session_id') returns None if cookie missing, avoiding error.
  3. Final Answer:

    Using square brackets to access cookie may cause KeyError if cookie missing -> Option C
  4. Quick Check:

    Access cookie safely with get() to avoid errors = B [OK]
Hint: Use request.cookies.get() to avoid KeyError [OK]
Common Mistakes:
  • Using response.cookies to read cookies
  • Assuming cookie names are case-insensitive
  • Ignoring possibility of missing cookies causing errors
5. You want to create a Flask route that sets a cookie named theme with value dark that expires in 7 days. Which code snippet correctly does this?
hard
A. resp.set_cookie('theme', 'dark', max_age=7*24*60*60)
B. resp.set_cookie('theme', 'dark', expires=7)
C. resp.set_cookie('theme', 'dark', max_age=7)
D. resp.set_cookie('theme', 'dark', expires='7 days')

Solution

  1. Step 1: Understand cookie expiration parameters

    To set expiration, use max_age in seconds or expires as a datetime object.
  2. Step 2: Calculate 7 days in seconds and check syntax

    7 days = 7*24*60*60 seconds. resp.set_cookie('theme', 'dark', max_age=7*24*60*60) uses max_age correctly with this calculation.
  3. Final Answer:

    resp.set_cookie('theme', 'dark', max_age=7*24*60*60) -> Option A
  4. Quick Check:

    Use max_age in seconds for 7 days = D [OK]
Hint: Use max_age in seconds for cookie expiry [OK]
Common Mistakes:
  • Passing expires as integer days instead of seconds or datetime
  • Using string '7 days' which is invalid
  • Confusing max_age and expires parameters
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard