user189198
user189198

Reputation:

Redirect to OAuth URL with headers

I'm trying to write a Python 3.5 Flask application that redirects a user to an OAuth URL, for authentication / authorization. As part of that redirection, I have to include the Authorization header. The built-in redirect() method in Flask doesn't seem to support adding HTTP headers.

What's the proper way of handling this in such an application?

Upvotes: 7

Views: 12220

Answers (1)

pech0rin
pech0rin

Reputation: 5026

You will need to build your own response object to add headers. You can check out the docs here: http://docs.python-requests.org/en/master/api/#requests.Response

A simple example for your use case would be something like:

response = Response(headers={'Authorization': 'whatever'},
                    is_redirect=True,
                    url="https://your-redirected-url.com")
return response

Edit: Further info

Also, I would check out https://github.com/lepture/flask-oauthlib if you are interested in using a library. It has support for oAuth1 and oAuth2 and it is relatively easy to setup with a standard Flask app.

Edit: Another way of doing it

This morning I remembered a simpler way to do this. You can call the redirect function and it will return a flask Response object. Then you are able to set the headers on that newly created object.

response = redirect('https://url')
response.headers = {'authorization': 'whatever'}  
return response

Upvotes: 12

Related Questions