Yar*_*rin 3 ruby amazon-s3 noindex http-headers
我们有一些公开分享的S3文件,我们希望确保这些文件不会被Google编入索引.我似乎无法找到有关如何执行此操作的任何文档.有没有办法在各个S3对象上设置"noindex"x-robots-tag响应头?
(我们正在使用Ruby AWS客户端)
似乎没有办法做到这一点.
只有来自S3 PUT
对象请求的某些标头被记录为在获取对象时返回.
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html
您发送的任何其他内容似乎都会被忽略,只要它实际上不会使请求无效.
实际上,这是我在研究之前的想法,而且几乎是正确的.
此处的文档似乎不完整,其他地方建议以下请求标头(如果与上传一起发送)将显示在下载中:
Cache-Control
Content-Disposition
Content-Encoding
Content-Type
x-amz-meta-*
Run Code Online (Sandbox Code Playgroud)
其他标题列在后一个链接中,但其中一些标题Expect
对GET
请求没有意义,因此它们在逻辑上不会出现.
到目前为止,这与我对S3的体验一致.
如果您随请求发送随机但无效的标头,则会被忽略.例:
X-Foo: bar
Run Code Online (Sandbox Code Playgroud)
S3似乎在上传时接受了这个,但丢弃它(可能不存储它)...下载对象不会返回X-Foo
标题.
但X-Robots-Tag
似乎是一个无证件的例外.
使用X-Robots-Tag: noindex
(例如)上传文件确实会导致与对象一起返回相同的标题和值GET
.
除非有人能够引用解释其原因的文档,否则我们将在明显无证的领域中运作.
但是,如果您有兴趣去那里,简单的答案似乎是,您只需将此标头添加到PUT
您发送到REST API以上传对象的HTTP 请求中.
"不是那么快,"你说,"我正在使用Ruby SDK." 确实.AWS Ruby客户端似乎太"乐于助人",让您至少可以轻松逃脱.那里的文档显示了如何添加"元数据" -
:metadata
(哈希) - 要包含在对象中的元数据的哈希值.这些将作为前缀为x-amz-meta的标头发送到S3.每个名称,值对都必须符合US-ASCII.
嗯,这不会起作用,因为你会得到x-amz-meta-x-robots-tag.
如何在上传中设置其他标题?您通常设置的每个其他标头都是选项哈希的元素,例如:cache_control
,Cache-Control:
在上传请求中变为.除非他们盲目地将该哈希中的密钥应用于上传交易(这将是一个糟糕的设计与优秀的运气相结合),那么你可能没有一种直接的方式从那里到达.我不能更具体,因为我真正了解Ruby的事情与我所知道的Java相同 - 从我所看到的,我不喜欢它.:)
但X-Robots-Tag
似乎是S3支持的自定义标题,在某种程度上,没有明确的事实记录.它至少被REST API接受了.
如果失败,您可以在上传对象后手动将此标头添加到S3控制台中的元数据中.(注意,X-Foo: Bar
从S3控制台也不起作用 - 它被静默丢弃,没有错误 - 但X-Robots-Tag:
工作正常).
当然,您也可以在存储桶的根目录中放置一个可公开读取的robots.txt文件(包含相应的指令).这取决于您的合成组合,路径层次结构和其他因素,这些(或许)并不像选择性地设置标题那么简单,但如果整个存储桶由您不希望编入索引的信息组成,它应该很容易实现您想要的,因为如果在robots.txt中不允许内容,则不应将内容编入索引,即使搜索蜘蛛跟随来自其他网站的链接 - 每个域(和子域)的robots.txt文件都是独立的.
归档时间: |
|
查看次数: |
2127 次 |
最近记录: |