How to Get Request Headers in Flask: Simple Guide
In Flask, you can get request headers using
request.headers, which behaves like a dictionary containing all headers sent by the client. Import request from flask and access headers inside a route function with request.headers.get('Header-Name').Syntax
Use request.headers inside a Flask route to access HTTP headers. It acts like a dictionary where keys are header names.
request.headers: The object holding all headers.request.headers.get('Header-Name'): Safely get a specific header value.request.headers['Header-Name']: Get a header value but raises an error if missing.
python
from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): user_agent = request.headers.get('User-Agent') return f"User-Agent header is: {user_agent}"
Example
This example shows a simple Flask app that reads the User-Agent header from the incoming request and returns it in the response.
python
from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): user_agent = request.headers.get('User-Agent') return f"Your User-Agent is: {user_agent}" if __name__ == '__main__': app.run(debug=True)
Output
Your User-Agent is: Mozilla/5.0 (example user agent string)
Common Pitfalls
Common mistakes when accessing headers in Flask include:
- Using
request.headers['Header-Name']without checking if the header exists, which raises aKeyError. - Not importing
requestfromflask. - Trying to access headers outside a request context (like outside a route function).
Always use request.headers.get() to avoid errors if the header is missing.
python
from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): # Wrong: may raise KeyError if header missing # user_agent = request.headers['User-Agent'] # Right: safely get header or None user_agent = request.headers.get('User-Agent') return f"User-Agent: {user_agent}"
Quick Reference
| Action | Code Example | Notes |
|---|---|---|
| Get all headers | request.headers | Returns all headers as a dictionary-like object |
| Get specific header safely | request.headers.get('Header-Name') | Returns header value or None if missing |
| Get specific header directly | request.headers['Header-Name'] | Raises KeyError if header missing |
| Check if header exists | 'Header-Name' in request.headers | Returns True or False |
Key Takeaways
Use request.headers.get('Header-Name') to safely access headers without errors.
Always import request from flask before accessing headers.
Access request.headers only inside route functions or request context.
request.headers behaves like a dictionary with all HTTP headers.
Check header existence with 'Header-Name' in request.headers before direct access.