【发布时间】:2021-10-05 13:33:39
【问题描述】:
我目前正在使用 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"}
【问题讨论】:
-
浏览器在 devtools 控制台中记录的确切错误消息是什么?
-
响应的HTTP状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。如果 Chrome 没有向您显示它,请使用 Firefox devtools 中的网络窗格来检查它。是 4xx 还是 5xx 错误而不是 200 OK 成功响应?
-
@sideshowbarker 控制台中的确切错误消息是“Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at >。(原因:CORS header 'Access- Control-Allow-Origin' 缺失)。”