python - FastAPI - CORS 和 slowapi
问题描述
我目前正在使用 fastapi/heroku 和前端 react/netlify 部署一个带有后端的 webapp。最初我有一个使用 CORSMiddleware 解决的 CORS(CORS 标头“Access-Control-Allow-Origin”)问题。
决定研究我的应用程序的速率限制,并通过研究发现slowapi 是最推荐的。然而,问题是当通过他们的文档(https://slowapi.readthedocs.io/en/latest/)实施 slowapi 时,我又再次收到 CORS 错误。
有没有其他人遇到过类似的问题并有解决方法?或者有没有更好的方法来限制我的应用程序。
示例代码:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from slowapi import Limiter, _rate_limit_exceeded_handler
from slowapi.util import get_remote_address
from slowapi.errors import RateLimitExceeded
limiter = Limiter(key_func=get_remote_address)
origins = [example_origin]
app = FastAPI()
app.add_middleware(CORSMiddleware, allow_origins=origins)
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
@app.get("/home")
@limiter.limit("5/minute")
def homepage(request: Request):
return {"test": "words"}
解决方案
更新:通过引入“请求”解决了这个问题,这在 slowapi 文档中没有说明,请求:端点中的请求(包含在文档中)
from fastapi import FastAPI, Request
@app.get("/home")
def homepage(request: Request):
return {"test": "words"}
推荐阅读
- angular - 我不能在 AppRoutingModule 中使用 TranslateService 吗?
- c++ - 线程 4:EXC_BAD_ACCESS(代码=1,地址=0x0)
- django - 使用 Docker 在 Heroku 上设置和部署 Cookiecutter-Django 项目:部署失败,应用程序尚未加载
- database - 需要缩小出现在子表单中的查询结果,然后选择并显示平均值
- c++ - 有没有一种通用的方法来“取消保护”静态 const 成员?
- c# - 在 AssemblyInfo.cs 中使用更新的值
- c# - 为什么我不能正确设置易失性注册表值?
- android - 从recyclerview适配器内的arraylist中删除元素,OnBindViewHolder方法内的NotifyDatasetChanged
- apache - 特定文件夹的虚拟主机不是整个域?
- python - 删除列表字典中的元素