Azure / Azure/azure-functions-python-worker
[Bug] Python Azure Function worker incorrectly URL encodes cookie value
- Lingua principale
- Python
- Stelle
- 357
- Fork
- 116
- Merge medio
- 32m
- PR unite (30g)
- 1
Descrizione
### Expected Behavior
Azure Function worker using Python FastAPI should not URL encode cookie values
Expected behavior on HTTP Response Headers:
`set-cookie: test="hello//world"; Path=/; SameSite=lax`
e.g. when using Python FastAPI without Azure Functions, it correctly does not URL encode.
````
import uvicorn
from fastapi import FastAPI
from fastapi.responses import PlainTextResponse
app = FastAPI()
@app.get("/")
def http_trigger():
response = PlainTextResponse("", status_code=200)
response.set_cookie(key='test', value='hello//world')
return response
if __name__ == "__main__":
uvicorn.run(app, host="127.0.0.1", port=7071)
````
Run `curl -v http://localhost:7071/` and response is correct as `set-cookie: test="hello//world"; Path=/; SameSite=lax`
### Actual Behavior
Actual incorrect behavior on HTTP Response Headers, cookie value is incorrect and unexpectedly URL encoded
`Set-Cookie: test=hello%2F%2Fworld; domain=; path=/; samesite=lax`
Tested bug with
* Python 3.12 with FastAPI
* Azure Functions Core tools 4.3.0 locally
* Deployed to production Azure Function
### Steps to Reproduce
1. Run `func start` or deploy to Azure using sample code provided below
2. Send a test HTTP request e.g. `curl -v http://localhost:7071/`
3. Azure Functions worker incorrectly URL encodes the response cookie value in the `Set-Cookie` header
### Relevant code being tried
```shell
import azure.functions as func
from fastapi import FastAPI
from fastapi.responses import PlainTextResponse
app = FastAPI()
func_app = func.AsgiFunctionApp(app=app, http_auth_level=func.AuthLevel.ANONYMOUS)
@app.get("/")
def http_trigger():
response = PlainTextResponse("", status_code=200)
response.set_cookie(key='test', value='hello//world')
return response
```
### Relevant log output
```shell
N/A
```
### requirements.txt file
```shell
azure-functions
fastapi
```
### Where are you facing this problem?
Production Environment (explain below)
### Function app name
Private
### Additional Information
_No response_
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia con il percorso dell’adattatore ASGI creato da func.AsgiFunctionApp e confronta la gestione degli header di risposta con l’output di PlainTextResponse.set_cookie di FastAPI. Riproduci il problema con func start e curl -v usando il valore hello//world; il lavoro è completato quando l’header Set-Cookie conserva il valore del cookie previsto e un controllo di regressione lo copre.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- azure, fastapi, python
- Ambito
- api, backend
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 45/100