36

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?

asked May 16, 2012 at 6:45
2
  • 2
    It doesn't make sense to ask how you do this in Python, as Python is not a web-only language. You should ask how you do it with your framework, ie Django. Commented May 16, 2012 at 7:02
  • you are right , i am editing :) Commented May 16, 2012 at 7:03

5 Answers 5

58

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.

coffee-grinder
27.7k19 gold badges59 silver badges82 bronze badges
answered May 16, 2012 at 6:47
Sign up to request clarification or add additional context in comments.

6 Comments

yes i am using tastypie , is there anything more with these headers on tastypie
There's nothing in particular with tastypie and headers, but rather than rewriting your own authentication layer, you can use tastypie's built in one. django-tastypie.readthedocs.org/en/latest/…
Thank you jordan , its request.META.get('Authorization')
Sorry about that. request.META['Authorization'] or request.META.get('Authorization')
How does 'Authorization' work as a key? The docs say headers in META are upper-cased and have HTTP_ prepended. docs.djangoproject.com/en/dev/ref/request-response/…
|
14

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

answered Oct 8, 2019 at 15:13

1 Comment

I recommend this because `request.META.get('HTTP_AUTHORIZATION') may return nothing if testing using the Django test client.
10

You can use

request.META['HTTP_AUTHORIZATION']

and sometimes

request.META['Authorization']

can help.

answered Nov 9, 2018 at 13:36

Comments

1

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
answered Oct 13, 2021 at 22:49

Comments

0

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

answered Jul 13, 2020 at 5:59

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.