【问题标题】:Why does my serverless Lambda function reject Cache-Control header?为什么我的无服务器 Lambda 函数拒绝 Cache-Control 标头?
【发布时间】:2017-11-06 07:00:53
【问题描述】:

我正在使用 FineUploader 将文件上传到 S3。在使用 DELETE 功能时,我收到以下错误:

XMLHttpRequest 无法加载 https://xxxxxxx.execute-api.us-east-1.amazonaws.com/prod/deleteS3File?。 请求头域 Cache-Control 不允许 预检响应中的 Access-Control-Allow-Headers。

lambda 函数是使用很棒的无服务器框架创建的,配置如下:

functions:
  deleteS3File:
    handler: handler.deleteS3File
    events:
      - http:
          path: deleteS3File
          method: POST
          integration: lambda
          cors: true
          response:
            headers:
              Access-Control-Allow-Origin: "*"

知道这个错误对 Lambda 函数意味着什么以及如何解决它吗?

【问题讨论】:

    标签: amazon-web-services http-headers aws-lambda fine-uploader serverless-framework


    【解决方案1】:

    你不支持的POST verb preflights an OPTIONS verb

    因此,您需要为 OPTIONS 创建一个方法,该方法将返回状态码 200(成功)并带有预期的标头。

    对于 OPTIONS 和 POST,请尝试以下标头:

    Access-Control-Allow-Origin: "*"
    Access-Control-Allow-Methods: "GET, HEAD, OPTIONS, POST, PUT, DELETE"
    Access-Control-Allow-Headers: "Access-Control-Allow-Headers, Cache-Control, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"
    

    您可以稍后微调标题以允许您需要的内容

    【讨论】:

    • 只是为了完善答案 - 我创建了一个无服务器 OPTIONS 函数,该函数仅返回指定的访问控制允许标头。
    猜你喜欢
    • 1970-01-01
    • 2020-07-25
    • 2015-04-08
    • 1970-01-01
    • 2013-01-10
    • 2014-07-04
    • 1970-01-01
    • 2018-11-22
    • 2017-07-27
    相关资源
    最近更新 更多