-
Notifications
You must be signed in to change notification settings - Fork 107
Open
Description
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
- Run
func start
or deploy to Azure using sample code provided below - Send a test HTTP request e.g.
curl -v http://localhost:7071/
- Azure Functions worker incorrectly URL encodes the response cookie value in the
Set-Cookie
header
Relevant code being tried
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
N/A
requirements.txt file
azure-functions
fastapi
Where are you facing this problem?
Production Environment (explain below)
Function app name
Private
Additional Information
No response