Node.js 使用middy允许自定义标题

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

我正在使用AWS lambda代码处理中间件。下面是我的代码:

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>