Search code examples
pythoncorsfastapi

How can I enable CORS in FastAPI?


I'm trying to enable CORS in this very basic FastAPI example, however it doesn't seem to be working.

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

app = FastAPI()

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

@app.get('/')
def read_main():
    return {'message': 'Hello World!'}

This is the response I get:

curl -v http://127.0.0.1:8000
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8000 (#0)
> GET / HTTP/1.1
> Host: 127.0.0.1:8000
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< date: Fri, 08 Jan 2021 19:27:37 GMT
< server: uvicorn
< content-length: 26
< content-type: application/json
<
* Connection #0 to host 127.0.0.1 left intact
{"message":"Hello World!"}*

Solution

  • you can find answer from this:fastapi cors

    then this is a very simple code to achieve it:

    1. create a python file and named it main.py.

    2. add code in this file.

    from fastapi import FastAPI
    from fastapi.middleware.cors import CORSMiddleware
    
    app = FastAPI()
    
    origins = ["*"]
    
    app.add_middleware(
        CORSMiddleware,
        allow_origins=origins,
        allow_credentials=True,
        allow_methods=["*"],
        allow_headers=["*"],
    )
    
    
    @app.get("/")
    async def main():
        return {"message": "Hello World"}
    

    and run this app:

    uvicorn main:app  --reload --host 0.0.0.0 --port 8000
    

    if you computer ip is 192.12.12.12

    you can check this link and just write a small javascript in html:

    <script>
            fetch("http://192.12.12.12:8000/").then((Response) => {
                return Response.json()
            }).then((data) => {
                console.log(data);
            })
        </script>