Technical questionAccepted answer
How can I enable CORS in FastAPI?
user270199
Jan 8
0 views1
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!"}*
1 answer
Accepted answer · original discussion
yuanzz
PermalinkMar 3
you can find answer from this:fastapi cors
then this is a very simple code to achieve it:
create a python file and named it
main.py.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>
3 question comments
Use comments to ask for clarification. Post a solution as an answer.
lsabiPermalink
Jan 8
Have you tried with a browser or an app? My guess is that curl is not sending the
Origin in the headers because it has no well defined origin, so it cannot return it in the headers