Aws lambda &引用;缺少身份验证令牌“;飞行前的选择

Aws lambda &引用;缺少身份验证令牌“;飞行前的选择,aws-lambda,axios,aws-api-gateway,serverless-framework,serverless,Aws Lambda,Axios,Aws Api Gateway,Serverless Framework,Serverless,我正在使用AWS提供的API网关,我有一个用于delete方法的无服务器(框架)端点。客户端正在使用Axios,配置如下: await Axios.delete(`${apiEndpoint}/todos/${todoId}`, { withCredentials: true, headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${idToken}`

我正在使用AWS提供的API网关,我有一个用于delete方法的无服务器(框架)端点。客户端正在使用Axios,配置如下:

  await Axios.delete(`${apiEndpoint}/todos/${todoId}`, {
    withCredentials: true,
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${idToken}`
    }
  }).then..
此删除请求失败(403),显然是因为选项预飞行失败:

{“消息”:“缺少身份验证令牌”}

在这种情况下,最佳做法是什么

  • 我是否应该强制/修复Axios客户端在选项中发送身份验证令牌,以及如何做到这一点

  • 或者我应该在aws网关端点中禁用选项的身份验证,以及如何做到这一点

  • 编辑: 添加了cors:true没有在AWS网关上为TODO/{todoId}创建选项,这可能是无服务器框架的错误?(我必须明确地为选项定义一个入口点,这是不好的

    Framework Core: 1.60.1
    Plugin: 3.2.6
    SDK: 2.2.1
    Components Core: 1.1.2
    Components CLI: 1.4.0
    

    不,你不能。我在Axios上也遇到了同样的问题。所有预授权请求都必须是匿名的。请参见Tomcat中的内容。那么规范是否需要它,浏览器也不会发送任何auth头,不管你做什么。

    谢谢@Michael-O,我通过为指向deleteTodo的相同lambda的选项创建了一个端点来解决这个问题,这远远不理想,仍然在研究无服务器框架,如果你有更多的见解,请告诉我!@martin,请注意飞行前选项请求不是常规的选项请求。你必须在这里进行区分。看看Tomcat中的过滤器,你会注意到。如果其他地方有解决方案,最好不要尝试解决这个问题。我在处理我的personal项目与AWS、serverless framework一起,解决了一个MissingAuthenticationToken和CQRS问题。我确实修改了serverless.yml和响应头。我希望这能有所帮助。
    Framework Core: 1.60.1
    Plugin: 3.2.6
    SDK: 2.2.1
    Components Core: 1.1.2
    Components CLI: 1.4.0