AWS Elastic Load Balancer 尽管配置了 HTTPS,仍重定向到 HTTP [已关闭]

问题描述 投票:0回答:1

我目前面临 AWS Elastic Beanstalk 设置的问题,其中前端和后端应用程序分别部署在 Elastic Beanstalk 上。前端是用 React 构建的,后端是 FastAPI 应用程序。两个负载均衡器都配置为处理 HTTPS 流量,并且我设置了监听器规则,将 HTTP(端口 80)重定向到 HTTPS(端口 443)。

但是,在向后端发出请求时,我观察到 307 临时重定向到 HTTP URL。

关键细节:

  1. 负载均衡器配置:配置 HTTP 到 HTTPS 重定向的侦听器规则。
  2. SSL/TLS 证书:有效并与负载均衡器关联。
  3. 前端应用程序:部署在 Elastic Beanstalk 上的 React 应用程序。
  4. 后端应用程序:部署在单独的 Elastic Beanstalk 环境上的 FastAPI 应用程序。

我已经彻底审查了 FastAPI 路由处理程序、中间件和反向代理设置。尽管如此,我无法确定为什么会发生 307 重定向到 HTTP。前端 React 应用程序向后端发起请求,我怀疑前端和负载均衡器之间可能存在交互导致此行为。

考虑到前端和后端单独的 Elastic Beanstalk 部署,有人可以提供有关解决此问题的指导吗?是否有需要在前端和后端检查的特定日志或配置?或者如果我必须在我的 FastAPI 应用程序中查看任何会导致出现 307 错误的内容?

下面是我的 /auth/token 的 FastApi 代码片段:

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

app.include_router(auth_router, prefix="/auth", tags=["Authentication"])

@router.post("/token", response_model=dict)
async def login(user: User):
    return login_user(user)

def login_user(user: User):
    attributes = user_table.scan(AttributesToGet=["userId", "email", "password_hash"])
    users = attributes['Items']
    user_exists = any(item.get('email') == user.email for item in users)
    if not user_exists:
        raise HTTPException(status_code=400, detail="User not found")
    selected_user = [item for item in users if (item.get('email') == user.email)][0]
    is_verified = verify_password(user.password.get_secret_value(), selected_user.get('password_hash'))
    if is_verified:
        user = selected_user
        user.pop("password_hash")
        token_data = {"sub": user.get("email")}
        token = encode(token_data, HASH_SECRET, ALGORITHM)
        save_audit_trail(user_id=user.get('userId'), action_type="login", description="Logged In to system")
        return {"access_token": token, "token_type": "bearer", "user": user}
    raise HTTPException(status_code=400, detail="Invalid Login Credentials.")

任何见解或帮助将不胜感激!

python reactjs amazon-web-services amazon-elastic-beanstalk fastapi
1个回答
-1
投票

假设您已检查 ELB 配置是否有任何错误,您是否检查过应用程序代码中是否存在可能触发 307 重定向的逻辑?这可能是故意的,也可能是由于代码中的配置错误或错误处理造成的。

© www.soinside.com 2019 - 2024. All rights reserved.