Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 AWS cloudfront在不使用Lambda@Edge_Amazon S3_Amazon Cloudfront_Custom Headers - Fatal编程技术网

Amazon s3 AWS cloudfront在不使用Lambda@Edge

Amazon s3 AWS cloudfront在不使用Lambda@Edge,amazon-s3,amazon-cloudfront,custom-headers,Amazon S3,Amazon Cloudfront,Custom Headers,我想将x-frame-options作为sameorigin添加到AWSCloudFront服务中,该服务在S3存储桶上为我的应用程序提供服务 我不想添加新的Lambda函数来编辑请求头 实际上,我在类似的附件中找到了一个位置: CloudFront发行版->我的发行版设置->来源和来源组->代表我的应用的S3内容项->添加来源自定义标题->标题名称:x-frame-options,值:sameorigin 但当部署完成时,仍然会在S3 bucket文件和URL上的所有相关请求中获取旧的头 如

我想将x-frame-options作为sameorigin添加到AWSCloudFront服务中,该服务在S3存储桶上为我的应用程序提供服务

我不想添加新的Lambda函数来编辑请求头

实际上,我在类似的附件中找到了一个位置:

CloudFront发行版->我的发行版设置->来源和来源组->代表我的应用的S3内容项->添加来源自定义标题->标题名称:x-frame-options,值:sameorigin

但当部署完成时,仍然会在S3 bucket文件和URL上的所有相关请求中获取旧的头

如何在没有任何Lambda函数的情况下直接使用现有的AWS CloudFront panel来添加标题?

您正在配置的“源站自定义标题”不是添加到源站响应中的标题,而是添加到向源站发出的请求中的标题。从:

您可以配置CloudFront向请求添加自定义头 它发送到你的原点。这些自定义标题使您能够发送 从你的来源收集你不了解的信息 典型的查看器请求。这些标题甚至可以为每个标题进行自定义 起源。CloudFront支持自定义和 亚马逊S3起源

因此,没有添加响应头的选项。虽然存在影响返回给查看器的标题的可能性,但这仅适用于
内容类型
-标题,因此这不是一个选项

最好的选择是使用Lambda@Edge功能。虽然这听起来像是一个麻烦且昂贵的解决方案,但实际上并非如此。对于您的用例,其代码Lambda@Edge功能可以简单到如下所示:

def lambda_处理程序(事件、上下文):
响应=事件[“记录”][0][“cf”][“响应”]
响应[“标题”][“x-frame-options”]=“:sameorigin”
返回响应

当您配置此Lambda@Edge函数来触发CloudFront中的“源响应”事件,它不会针对每个查看器请求执行,而是仅当返回到查看器的内容未被CloudFront缓存且必须首先从S3获取时才会执行。这有助于最大限度地减少执行Lambda@Edge函数。

感谢您的帮助,我对此很确定,但在Stackoverflow中的一些文档和评论中,处理此问题的开发人员告诉您,您可以通过原始自定义标题添加,如图所示,但不幸的是,它没有起作用。