accessing request headers on django/python
Question:
I need to create a secure restFUL api using sencha and django. I am fairly new to python. So far i am able to send request from sencha to server using basic authentication as below
new Ext.data.Store({
proxy: {
type: "ajax",
headers: {
"Authorization": "Basic asdjksdfsksf="
}
}
})
In php/apache i can access those header with ease with the code below
$headers = apache_request_headers();
print_r($headers);
How to do this in python?
Answers:
You can access them within a view using request.META
, which is a dictionary.
If you wanted the Authorization header, you could do request.META['HTTP_AUTHORIZATION']
If you’re creating a restful API from scratch, you might want to take a look at using tastypie.
You can use
request.META['HTTP_AUTHORIZATION']
and sometimes
request.META['Authorization']
can help.
As of django 2.2 HttpRequest.headers
were added to allow simple access to a request’s headers. So now you can also get authentication header using get()
function on request.headers
request.headers.get('Authorization')
This will give you value token value back.
Bearer eyJ0eYourToken...
https://docs.djangoproject.com/en/2.2/ref/request-response/#django.http.HttpRequest.headers
HttpRequest.headers
New in Django 2.2.
if 'Authorization' in request.headers: # Authorization header exists
#do something here
pass
else: # Authorization header not exists
#do something here
pass
Read also Django official Doc
For older versions of django prior to 2.2, you’ll need to access the headers in the following way using the META key. Always important to first check if the key authorization header keys exists just in case it wasn’t posted otherwise you’ll run into non-existent key errors.
if not ('HTTP_AUTHORIZATION' in request.META.keys()):
return HttpResponse('NO AUTH HEADER PROVIDED')
elif (request.META['HTTP_AUTHORIZATION'] == 'Bearer YourAuthorizationKey123':
# Validation passed - Proceed with whatever else you want to do
I need to create a secure restFUL api using sencha and django. I am fairly new to python. So far i am able to send request from sencha to server using basic authentication as below
new Ext.data.Store({
proxy: {
type: "ajax",
headers: {
"Authorization": "Basic asdjksdfsksf="
}
}
})
In php/apache i can access those header with ease with the code below
$headers = apache_request_headers();
print_r($headers);
How to do this in python?
You can access them within a view using request.META
, which is a dictionary.
If you wanted the Authorization header, you could do request.META['HTTP_AUTHORIZATION']
If you’re creating a restful API from scratch, you might want to take a look at using tastypie.
You can use
request.META['HTTP_AUTHORIZATION']
and sometimes
request.META['Authorization']
can help.
As of django 2.2 HttpRequest.headers
were added to allow simple access to a request’s headers. So now you can also get authentication header using get()
function on request.headers
request.headers.get('Authorization')
This will give you value token value back.
Bearer eyJ0eYourToken...
https://docs.djangoproject.com/en/2.2/ref/request-response/#django.http.HttpRequest.headers
HttpRequest.headers
New in Django 2.2.
if 'Authorization' in request.headers: # Authorization header exists
#do something here
pass
else: # Authorization header not exists
#do something here
pass
Read also Django official Doc
For older versions of django prior to 2.2, you’ll need to access the headers in the following way using the META key. Always important to first check if the key authorization header keys exists just in case it wasn’t posted otherwise you’ll run into non-existent key errors.
if not ('HTTP_AUTHORIZATION' in request.META.keys()):
return HttpResponse('NO AUTH HEADER PROVIDED')
elif (request.META['HTTP_AUTHORIZATION'] == 'Bearer YourAuthorizationKey123':
# Validation passed - Proceed with whatever else you want to do