Amazon web services AmazonS3上的自定义标题
在AmazonS3上是否可以使用任意命名的自定义标题 例如,我使用一个指向AmazonS3的CDN作为源服务器,为了在CDN上启用高级功能,我需要使用一个自定义头Amazon web services AmazonS3上的自定义标题,amazon-web-services,amazon-s3,http-headers,Amazon Web Services,Amazon S3,Http Headers,在AmazonS3上是否可以使用任意命名的自定义标题 例如,我使用一个指向AmazonS3的CDN作为源服务器,为了在CDN上启用高级功能,我需要使用一个自定义头x-something-something 我认为使用x-amz-meta-(某物)可以做到这一点,但是如果没有amz,像x-(某物)-(某物)这样更一般的东西呢 我认为他们不可能这样做。它们涵盖了缓存和浏览器互操作性所需的主要标题 我认为他们只允许前缀为x-amz-meta-的自定义头是安全的,这可能是为了避免在将来更新api时与用户
x-something-something
我认为使用x-amz-meta-(某物)
可以做到这一点,但是如果没有amz
,像x-(某物)-(某物)
这样更一般的东西呢
我认为他们不可能这样做。它们涵盖了缓存和浏览器互操作性所需的主要标题 我认为他们只允许前缀为
x-amz-meta-
的自定义头是安全的,这可能是为了避免在将来更新api时与用户选择的头发生冲突
如果您需要将自定义属性附加到对象,那么在客户端应用程序中解析出
x-amz-meta-
应该很简单。这篇漂亮的文章解释了这一切
tldr:
你不能只使用S3。您需要通过使用CloudFront和LambdaLambda@Edge。它是Lambda和CloudFront之间的集成。它允许您在CloudFront中运行Lambdas。这允许您更改标题和其他内容。因此,如果您可以通过CloudFront访问S3,那么这可能是一个可行的选择。我可以使用。我编写了一个同步脚本,使用AWS客户端工具上的
--cache control
参数同步我的静态站点,然后手动重置它,并为几个特定文件添加几个其他标题:
cd/cd目录
#删除当前站点aws s3 rm s3://yourbucket--递归--排除“logs/*” #上载新站点,将所有文件的缓存头设置为1个月
aws s3同步。s3://yourbucket--exclude.idea/*'--exclude.git/*'--exclude.gitignore'--cache control max age=2592000 #覆盖某些文件的缓存头
python/pathToS3cmd/s3cmd modify--add header=“缓存控制:无缓存,无存储,必须重新验证”s3://yourbucket/somefile.html
python/pathToS3cmd/s3cmd/s3cmd modify--add header=“Expires:0”s3://yourbucket/somefile.html
python/pathToS3cmd/s3cmd/s3cmd modify--add header=“Pragma:no cache”s3://yourbucket/somefile.html
如果您控制客户端应用程序,那么以这种方式前缀的头不能完成什么任务呢。。。但如果是第三方的话,那就没那么微不足道了@Jeff我想如果你不直接访问AWS,你就会受到你使用的任何东西的限制。谢谢,我想知道为什么我不能自己设置自定义标题。
x-amz-meta-
前缀确实做到了这一点(亚马逊对这一事实的记录很差)。我正在使用他们的静态网站托管解决方案,我想设置x-Frame-Options。但是现在我不能,我需要考虑一些其他的解决方案,它有一些缺点,可以忽略日志、IntelliJ和Git文件。我把它作为实用同步脚本的一个很有帮助的例子放在这里。不幸的是,只支持一组受限的头文件。不过,支持与标准缓存控制相关的标头。另见