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

AWS API Gateway中OPTIONS请求出现403 MissingAuthenticationTokenException问题

问题排查与解决方案

针对你遇到的AWS API Gateway OPTIONS预检请求返回403 MissingAuthenticationTokenException的问题,以下是具体排查方向和解决步骤:

1. 检查API Gateway OPTIONS方法的集成配置

  • 如果你之前通过API Gateway控制台的「Enable CORS」按钮自动生成OPTIONS方法,它默认会创建Mock集成——这种情况下API Gateway会直接返回它自身配置的CORS头,不会将请求转发到你的Django后端。如果此时你的API启用了API Key要求,OPTIONS方法也会强制校验API Key,但浏览器预检请求不会携带API Key,直接触发403错误。
  • 解决方式:删除自动生成的Mock OPTIONS方法,手动创建OPTIONS方法,将集成类型设置为HTTP Proxy,指向你的Django后端地址,让请求转发到你编写的upload_image视图处理CORS逻辑。

2. 单独配置OPTIONS方法的API Key要求

  • 即使你为API全局启用了API Key,也必须确保OPTIONS方法的「API Key Required」选项设为false。浏览器的预检请求不会携带API Key,若强制校验会直接返回403,这是你遇到MissingAuthenticationTokenException的常见原因。
  • 操作路径:API Gateway控制台 → 目标资源 → OPTIONS方法 → 方法请求 → 设置「API Key Required」为false。

3. 确认API Gateway已重新部署

  • 所有API Gateway的配置修改(包括方法设置、CORS、API Key规则)都需要重新部署到对应阶段(比如你的dev阶段)才会生效。如果修改后未部署,旧的配置会继续生效,导致问题无法解决。

4. 验证路径匹配与请求转发

  • 检查API Gateway的资源路径(/dev/photos/)与Django的路由是否完全匹配(包括末尾斜杠)。若路径不匹配,OPTIONS请求无法到达你的upload_image视图,Django会返回默认404,API Gateway可能将其转换为403错误。
  • 查看Django服务器日志,确认是否收到了OPTIONS请求:如果日志中没有相关记录,说明请求未成功转发到后端,问题出在API Gateway的路径或集成配置。

5. 排查WAF或其他拦截规则

  • 如果你的API Gateway关联了AWS WAF,检查是否有规则拦截了OPTIONS请求,或拦截了未携带API Key的请求。
  • 查看API Gateway的CloudWatch执行日志,获取更详细的错误上下文,确认是否是第三方服务拦截导致的403。

前端代码优化建议

使用FormData时,无需手动设置Content-Type: multipart/form-data,Axios会自动根据FormData生成包含boundary的正确请求头,手动设置可能导致请求格式错误:

const formData = new FormData();
formData.append("image", selectedFile);

try {
  await axios({
    method: "put",
    url: "https://my-api.execute-api.eu-west-2.amazonaws.com/dev/photos/",
    data: formData,
    headers: {
      "x-api-key": "abc123"
    }
  });
} catch (error) {
  console.error(error);  
}

内容的提问来源于stack exchange,提问作者Mohamed Hassan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:47:10