【问题标题】:FastAPI - CORS and slowapiFastAPI - CORS 和 slowapi
【发布时间】: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' 缺失)。”

标签: python cors fastapi


【解决方案1】:

更新:通过引入“请求”解决了这个问题,这在 slowapi 文档中没有说明,并且请求:端点中的请求(包含在文档中)

from fastapi import FastAPI, Request

@app.get("/home")
def homepage(request: Request):
    return {"test": "words"}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-14
    • 2021-10-26
    • 2021-06-02
    • 2020-06-26
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多