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

添加AWS认证时遭遇CORS策略拦截错误,求解决方案

解决Lambda URL的CORS跨域错误(缺少Access-Control-Allow-Origin头)

你的错误信息:

Access to XMLHttpRequest at 'https://2ydk2p26dbv2ak5fygphvcb6ey0dzrzm.lambda-url.us-east-1.on.aws/' from origin 'https://function-url-ver2-1.d2qo24bmjgejow.amplifyapp.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

解决方法如下:

1. 配置Lambda URL的CORS规则

登录AWS控制台,找到目标Lambda函数:

  • 进入「配置」标签页,选择「函数URL」选项
  • 点击「编辑CORS」,进行以下设置:
    • 允许的来源:填入你的Amplify域名 https://function-url-ver2-1.d2qo24bmjgejow.amplifyapp.com(生产环境别用*,仅测试时临时使用)
    • 允许的方法:勾选OPTIONS和POST
    • 允许的标头:添加Authorization, x-amz-date, Content-Type
    • 保存配置

2. 在Lambda函数代码中处理OPTIONS预请求

浏览器会先发送OPTIONS预请求验证跨域权限,你的Lambda函数必须直接响应这个请求,返回正确的CORS头。以Node.js为例,在函数开头加入:

exports.handler = async (event) => {
  // 处理OPTIONS预请求
  if (event.requestContext.http.method === 'OPTIONS') {
    return {
      statusCode: 200,
      headers: {
        'Access-Control-Allow-Origin': 'https://function-url-ver2-1.d2qo24bmjgejow.amplifyapp.com',
        'Access-Control-Allow-Methods': 'POST, OPTIONS',
        'Access-Control-Allow-Headers': 'Authorization, x-amz-date, Content-Type'
      },
      body: ''
    };
  }

  // 你的原有业务逻辑代码
  // ...
};

3. 修正请求代码中的host参数

你的签名代码里的host带了https://,不符合AWS签名规范,会导致签名验证失败。修改为纯域名:

host = '2ydk2p26dbv2ak5fygphvcb6ey0dzrzm.lambda-url.us-east-1.on.aws';

内容的提问来源于stack exchange,提问作者Ajay Kulkarni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:09:50