You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已部署FastAPI应用无法处理API Key认证问题排查

FastAPI API Key认证异常排查(Replit部署)

我用以下FastAPI代码实现图片上传接口,上传完成后返回图片访问URL。部署在Replit后遇到问题:即使输入正确的令牌,API仍返回"Invalid or missing API Key"错误。认证代码复制自我另一正常运行的项目,目前无法定位问题。要求保留API Key认证方式,不更换其他认证方法。

代码实现

from fastapi import FastAPI, HTTPException, Security, status
from fastapi.security import APIKeyHeader
from pydantic import BaseModel
from pymongo import MongoClient
import os
import logging

app = FastAPI()

# Database setup
connection_string = os.environ["URI"]
client = MongoClient(connection_string)
db = client['gpt-4-vision-images']
collection = db['images']

# API Key setup

API_KEY = os.environ['API_KEY']
api_keys = [API_KEY]
api_key_header = APIKeyHeader(name="access_token", auto_error=False)


def get_api_key(api_key_header: str = Security(api_key_header), ) -> str:
    if api_key_header in api_keys:
        return api_key_header
    raise HTTPException(
        status_code=status.HTTP_401_UNAUTHORIZED,
        detail="Invalid or missing API Key",
    )


logging.info(f"Expected API Key: {API_KEY}")  # Log the expected API key


class ImageData(BaseModel):
    image_data: str
    image_name: str


@app.post('/image/upload')
async def upload_image(image_data: ImageData, api_key: str = Security(get_api_key)):
    collection.insert_one({
        'image_name': image_data.image_name,
        'data': image_data.image_data
    })
    return {
        'url': f'https://gpt-vision-webserver.replit.app/image/{image_data.image_name}?token={api_key}'
    }


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

排查建议

  • 核对Replit环境变量:确认API_KEY环境变量无拼写错误、无首尾空格,可重新粘贴正确密钥后保存生效。
  • 启用日志调试:添加日志基础配置(如logging.basicConfig(level=logging.INFO)),确保logging.info能输出预期API Key,验证环境变量读取是否正确。
  • 检查请求头:确认请求时的access_token请求头名称完全匹配(区分大小写),且令牌放在请求头而非查询参数中。
  • 本地对比测试:在本地配置相同环境变量运行代码,用Postman/curl测试接口,若本地正常则问题出在Replit部署配置。
  • 打印实际接收的令牌:在get_api_key函数中添加print(f"Received API Key: {api_key_header}"),查看Replit控制台输出,对比收到的令牌与预期值是否一致。

内容的提问来源于stack exchange,提问作者Marcus Peterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:32:37