我正在使用AWS提供的API网关,并且具有用于删除方法的无服务器(框架)终结点。客户端正在使用Axios,并且配置如下:
await Axios.delete(`${apiEndpoint}/todos/${todoId}`, {
withCredentials: true,
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${idToken}`
}
}).then..
此删除请求失败(403)显然是因为OPTIONS预检失败:
{“消息”:“缺少身份验证令牌”}
在这种情况下,最佳做法是什么?
我是否应该强制/修复Axios客户端以OPTIONS发送Auth令牌,以及如何做到这一点?
还是应该在aws网关端点中禁用对OPTIONS的身份验证,以及如何做到这一点?
DeleteTodo:
handler: src/lambda/http/deleteTodo.handler
events:
- http:
method: delete
path: todos/{todoId}
authorizer: Auth
iamRoleStatements:
编辑: 添加了 cors:true 并没有在AWS Gateway上为todos / {todoId}创建选项,这可能是无服务器框架的错误吗? (我必须为OPTIONS明确定义一个入口点,这不行。
Framework Core: 1.60.1
Plugin: 3.2.6
SDK: 2.2.1
Components Core: 1.1.2
Components CLI: 1.4.0
答案 0 :(得分:1)
不,您不能。我对Axios有同样的问题。所有的斗志请求都必须是匿名的。另请参见Tomcat中的this ticket。规范是否需要它,无论您做什么,浏览器都不会发送任何身份验证标头。