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

AWS FunctionURL遇合法CORS错误仍执行Lambda代码问题排查

Lambda FunctionURL移除CORS允许源后仍执行代码的原因分析

核心原因:CORS是浏览器端的安全限制,而非服务端拦截机制

  • 当浏览器发起跨域请求时,CORS的校验逻辑完全在浏览器侧执行:
    • 对于非简单请求,浏览器会先发送OPTIONS预检请求,若预检不通过(比如源不在允许列表),浏览器会阻止将实际请求的响应返回给前端,抛出CORS错误,但实际的业务请求已经发送到Lambda,代码已经执行完毕。
    • 对于简单请求(如GET/POST且Content-Type为text/plain等),浏览器会直接发送请求,Lambda执行代码后返回响应,浏览器检查响应头的Access-Control-Allow-Origin不匹配时才抛出错误,但此时代码早已执行。

和HTTP域名无关

不管新增的测试域名是HTTP还是HTTPS,都不会改变CORS的执行逻辑。只要浏览器判定请求是跨域的,就会触发CORS校验,但服务端(Lambda)不会因为CORS配置拒绝执行代码,只会在响应头中返回CORS相关字段,由浏览器决定是否报错。

如何真正拦截未授权访问

如果需要从服务端层面阻止未授权域名的请求执行业务代码,不能仅依赖FunctionURL的CORS配置,必须在Lambda代码中手动校验请求的Origin请求头:

  1. 在代码开头获取请求的Origin值;
  2. 与预设的允许源列表进行比对;
  3. 若不在列表内,直接返回403 Forbidden响应,终止后续业务逻辑执行。

内容的提问来源于stack exchange,提问作者Taha Erden

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:57:34