'FastAPI: CORS Middleware not working with GET method

I try to use CORS on the FastAPi framework but it dose not working with GET method

Here's the code I'm working on:


from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=['*'],
    allow_methods=["*"],
    allow_headers=["*"],
)


@app.get("/test1")
async def test1():
    return {"message": "Hello World"}



Solution 1:[1]

I had the same issue and the solution is to not use add_middelware but do the following:

First import from Starlette:

from starlette.middleware import Middleware
from starlette.middleware.cors import CORSMiddleware

Create the middleware:

middleware = [
    Middleware(
        CORSMiddleware,
        allow_origins=['*'],
        allow_credentials=True,
        allow_methods=['*'],
        allow_headers=['*']
    )
]

and then:

app = FastAPI(middleware=middleware)

This should work

Solution 2:[2]

Thanks @Sam_Ste, I had the same problem! I set my imports back to FastAPI and it still works. I think they are just proxies for the starlette modules (IMHO). The method is the vital thing, not using app_middleware.

from fastapi.middleware import Middleware
from fastapi.middleware.cors import CORSMiddleware

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 DollarAkshay
Solution 2 user2209120