ERROR 验证错误:Lambda 函数结果验证失败,该函数尝试删除只读标头,标头名称:Content-Length

Posted

技术标签:

【中文标题】ERROR 验证错误:Lambda 函数结果验证失败,该函数尝试删除只读标头,标头名称:Content-Length【英文标题】:ERROR Validation error: Lambda function result failed validation, the function tried to delete read-only header, headerName : Content-Length 【发布时间】:2021-10-26 12:47:41 【问题描述】:

每当我尝试添加响应标头时,CloudFront 都会向我抛出

ERROR 验证错误:Lambda 函数结果验证失败,函数尝试删除只读标头,标头名称:Content-Length。

ERROR 验证错误:Lambda 函数结果验证失败,函数尝试删除只读标头,标头名称:Content-Encoding。

const response = 
      status: '302',
      statusDescription: 'Found',
      headers: 
                'location': [
                              key: 'location',
                              value: 'https://abc.test.io'
                             ],
                 'set-cookie': [
                               key: 'set-cookie',
                               value: 'sessiontoken='+sessionObjectData.session.sessionId+'; Secure; HttpOnly'
                                ]
                
  
callback(null, response)

有人可以让我知道我在这里做错了什么吗?顺便说一句,我正在使用查看器响应事件

【问题讨论】:

任何人,谁对此有任何想法? 看起来没有解决方法 【参考方案1】:

如CloudFront functions docs 中所述,无法修改边缘函数的某些响应标头(包括“Content-Length”)。您可以尝试只更新您需要更改的标题,而不影响其他标题:

const response = event.Records[0].cf.response;
response.status = 302;
response.statusDescription = 'Found';
response.headers['location'] = [ key: 'Location', value:'https://abc.test.io'];

【讨论】:

以上是关于ERROR 验证错误:Lambda 函数结果验证失败,该函数尝试删除只读标头,标头名称:Content-Length的主要内容,如果未能解决你的问题,请参考以下文章

如何在 cloudwatch 上跟踪 appsync 验证错误?

Alexa 技能工具包 -Lambda 函数 - 无法验证 SpeechletRequest (java)

Terraform lambda 函数验证异常

Firebase SDK 令牌验证错误:auth/argument-error

tesseract 图片验证测试错误,如何处理error?

Yii2.0中(Hash is invalid error)验证错误