Node.js 使用middy允许自定义标题
我正在使用AWS lambda代码处理中间件。下面是我的代码:Node.js 使用middy允许自定义标题,node.js,aws-lambda,middy,Node.js,Aws Lambda,Middy,我正在使用AWS lambda代码处理中间件。下面是我的代码: const middy = require('middy') const middlewares = require('middy/middlewares') const handlerWrapper = (handler) => middy((event, context, callback) => { context.callbackWaitsForEmptyEventLoop = false; let c
const middy = require('middy')
const middlewares = require('middy/middlewares')
const handlerWrapper = (handler) => middy((event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
let code = 200
context.send = (body) => callback(null,{
statusCode: code,
body: JSON.stringify(body)
})
context.status = (_code) => {
code = _code
return context
}
return handler(event, context ,callback)
}).use(middlewares.jsonBodyParser()).use(middlewares.cors())
问题是,我的前端正在发送一个名为authorizationv2
的自定义头,当我的前端尝试向我的AWS lambda代码发送请求时,浏览器将显示此错误
访问位于的XMLHttpRequest'https://apiv2.website.com/data/list/“起源”http://admin.website.com'已被CORS策略阻止:飞行前响应中的访问控制允许标头不允许请求标头字段授权v2。
所以我假设要解决这个问题,我需要
middy
来允许自定义头authorizationv2
。我不完全确定如何使用middy来实现这一点。您需要在飞行前响应中添加自定义标题。有两种方法:
- 如果使用无服务器框架部署资源,请在函数定义中添加自定义头,如下所示:
yourfunctionname:
handler:path/to/handler
活动:
-http:
路径:路径/到/端点
方法:获取
cors:
来源:“*”
标题:
-内容类型
-X-Amz-Date
-授权书
-X-Api-Key
-X-Amz-Security-Token
-X-Amz-User-Agent
-
- 手动方式:转到AWS API网关并找到您的API资源。单击“操作”->“启用CORS”。在页面上,您可以在“访问控制允许标题”字段中添加自定义标题
yourfunctionname:
handler: path/to/handler
events:
- http:
path: path/to/endpoint
method: get
cors:
origin: "*"
headers:
- Content-Type
- X-Amz-Date
- Authorization
- X-Api-Key
- X-Amz-Security-Token
- X-Amz-User-Agent
- <your-custom-header-goes-here>