Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FastAPI RedirectResponse custom headers [duplicate]

Based off of my previous question, I need to now add a header to the response.

According to the documentation, I can simply just add the headers and another attribute to the RedirectResponse object.

When I test this, it doesn't seem to carry the header value over.

According to this post, it is impossible to set headers for a redirect request. So instead of a Redirect, maybe I should try something else?

Any ideas?

from fastapi import FastAPI, Request
from starlette.responses import RedirectResponse

app = FastAPI()

@app.get("/data/")
async def api_data(request: Request):
    params = str(request.query_params)
    url = f'http://some.other.api/{params}'
    headers = {'Authorization': "some_long_key"}
    response = RedirectResponse(url=url, headers=headers)
    return response
like image 568
Werner Avatar asked May 02 '26 07:05

Werner


1 Answers

One solution is to do the request in the app and then return the response

BUT this is very inefficient and will force all traffic to come through this server, while a redirect would have less network load

import requests
from fastapi import FastAPI, Request, Response

app = FastAPI()

@app.get("/data/")
async def api_data(request: Request):
    params = str(request.query_params)
    url = f'http://some.other.api/{params}'
    headers = {'Authorization': "some_long_key"}
    r = requests.get(url, headers=headers)
    return Response(content=r.content)
like image 121
Werner Avatar answered May 04 '26 22:05

Werner



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!