我在使用 FastAPI 和 CORS 时遇到了一些问题。你能给我一个有效的例子吗?
FastAPI 路由器:
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.post("/post")
async def postHandler(request: Request):
data = await request.json()
return {"resp": "Created a new game!"}
JavaScript:
async function apiRequest (url, method, reqBody) {
const reqParams = {
method: method,
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept"
}
};
if (method === "POST") reqParams["body"] = JSON.stringify(reqBody);
const response = await fetch(url, reqParams);
const data = await response.json();
return data.resp;
}
您的
allow_origins=[""]
应该是 allow_origins=["*"]
但是,最好设置一个变量,其中包含代表实际允许来源的字符串列表,例如
origins=["http://localhost:3000", ...]
并像 allow_origins=origins
一样传递它