gpt4 book ai didi

python - 为什么我会收到 CORS 错误原因 : CORS request did not succeed

转载 作者:行者123 更新时间:2023-12-04 11:30:29 28 4
gpt4 key购买 nike

我正在开发一个 svelte 应用程序,它使用 FastAPI 后端与我的组织本地的 PostgreSQL 数据库交互,而不是在我的 AWS EC2 实例上。
我使用 javascript 的 fetch api 将请求发送到我的后端以查询数据库中的各种内容,在我的本地机器上,所有这些请求都在两端接收,在 AWS 上,但是来自我前端的请求甚至无法被 fastAPI 后端识别。
我在设置这样的服务器方面相当缺乏经验,所以我认为这些服务器的设置存在一些基本错误,导致它们在 AWS 上无法像这样进行通信。
fastapi 代码如下所示:

import uvicorn
from fastapi import (Depends, FastAPI, HTTPException, Query,
Request)
from fastapi.middleware.cors import CORSMiddleware


app = FastAPI(debug=True)

origins = [
'*'
]

app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)


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

if __name__ == '__main__':
uvicorn.run(app, host="0.0.0.0", port=8000)
我的获取请求通常如下所示:
const endpoint = public_IP:8000 + `/`;

let objs = [];

fetch(endpoint)
.then(response => {
if (!response.ok) {
throw Error(response.statusText);
}
return response.json();
})
当我发送一个像上面那样的获取请求时,我收到一个 CORS 错误,原因是:CORS 请求没有成功。 FastAPI 服务器没有反馈,请求似乎从未到达它,我不确定为什么。据我所知,这通常与 HTTP 和 HTTPS 请求之间的问题有关,但这些似乎与我的问题无关,因为我的设置没有一部分不使用 HTTP。使用 chrome 时,我收到错误:无法加载资源:net::ERR_CONNECTION_REFUSED 以及。
我的 EC2 实例的 AWS 安全组允许从任何 IP 到端口 5000 和 8000 的 TCP 流量。这是托管我的两个应用程序的地方,分别是 Svelte 和 FastAPI。

最佳答案

最有可能的是,您在 fastapi 应用程序中的端点引发了异常。当出现这种情况时,CORSMiddleware通过 app.add_middleware(...) 安装没有看到任何 HTTP 响应,也没有机会对 FastAPI 错误处理程序生成的 HTTP 响应执行其工作。
解决方案是使用 CORSMiddleware 包装整个 FastAPI 应用程序,如下所示:

import uvicorn
from fastapi import (Depends, FastAPI, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware


app = FastAPI(debug=True)

origins = [
'*'
]


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


app = CORSMiddleware(
app=app,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)

if __name__ == '__main__':
uvicorn.run(app, host="0.0.0.0", port=8000)

关于python - 为什么我会收到 CORS 错误原因 : CORS request did not succeed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63606055/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com