Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -9,23 +9,24 @@ AUTH_HEADER = os.environ.get("AUTH_HEADER")
|
|
9 |
|
10 |
@app.api_route("/{full_path:path}", methods=["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"])
|
11 |
async def proxy(full_path: str, request: Request):
|
12 |
-
# Monta URL destino
|
13 |
url = f"{BACKEND_URL}/{full_path}"
|
14 |
|
15 |
# Copia headers originais e adiciona Authorization
|
16 |
headers = dict(request.headers)
|
17 |
headers["Authorization"] = AUTH_HEADER
|
18 |
|
19 |
-
#
|
|
|
|
|
|
|
20 |
body = await request.body()
|
21 |
|
22 |
-
# Faz requisição ao backend
|
23 |
async with httpx.AsyncClient() as client:
|
24 |
resp = await client.request(
|
25 |
method=request.method,
|
26 |
url=url,
|
27 |
headers=headers,
|
28 |
-
content=body,
|
29 |
params=dict(request.query_params)
|
30 |
)
|
31 |
|
@@ -33,7 +34,7 @@ async def proxy(full_path: str, request: Request):
|
|
33 |
return Response(
|
34 |
content=resp.content,
|
35 |
status_code=resp.status_code,
|
36 |
-
headers=
|
37 |
)
|
38 |
|
39 |
# Para rodar:
|
|
|
9 |
|
10 |
@app.api_route("/{full_path:path}", methods=["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"])
|
11 |
async def proxy(full_path: str, request: Request):
|
|
|
12 |
url = f"{BACKEND_URL}/{full_path}"
|
13 |
|
14 |
# Copia headers originais e adiciona Authorization
|
15 |
headers = dict(request.headers)
|
16 |
headers["Authorization"] = AUTH_HEADER
|
17 |
|
18 |
+
# Remove headers que podem causar conflito
|
19 |
+
for h in ["host", "content-length", "accept-encoding", "connection"]:
|
20 |
+
headers.pop(h, None)
|
21 |
+
|
22 |
body = await request.body()
|
23 |
|
|
|
24 |
async with httpx.AsyncClient() as client:
|
25 |
resp = await client.request(
|
26 |
method=request.method,
|
27 |
url=url,
|
28 |
headers=headers,
|
29 |
+
content=body if request.method != "GET" else None,
|
30 |
params=dict(request.query_params)
|
31 |
)
|
32 |
|
|
|
34 |
return Response(
|
35 |
content=resp.content,
|
36 |
status_code=resp.status_code,
|
37 |
+
headers={k: v for k, v in resp.headers.items() if k.lower() not in ["content-encoding", "transfer-encoding", "connection"]}
|
38 |
)
|
39 |
|
40 |
# Para rodar:
|