使用AWS Java SDK设置Expires和其他各种HTTP标头

时间:2012-12-09 21:49:47

标签: java amazon-s3 amazon-web-services

我的一些用户正在使用不支持Cache-Control HTTP标头的旧浏览器。因此,我想设置Expires标头,以确保我的内容在可能的情况下被缓存。

我正在使用Java SDK,我发现this question表示在上传时使用ObjectMetadata中的setHeader方法。

这似乎工作正常,但我注意到在JavaDocs中它声明setHeader方法仅供内部使用。从我自己的代码中调用此方法可能会出现任何问题吗?

1 个答案:

答案 0 :(得分:1)

  

这似乎工作正常,但我注意到在JavaDocs中它说明了   setHeader方法仅供内部使用。有没有   从我自己的代码中调用此方法可能产生的问题?

这个有点令人惊讶的问题已经出现了,请看bkirkbri's comment - 这里是my reply

  嗯,我确实没有意识到这种限制,但回想一下   使用Expires:在某个时刻退缩;我可能错了,   我经常使用其他SDK与S3进行交互(例如   C#/ Python,它肯定支持这个)并且可能混合了它   up - 代码本身与其他setXYZHeader()没有区别   目前的方法(见ObjectMetadata.java),所以限制   将基于不可见的副作用,如果有的话。

这似乎仍然适用,即如果您分析代码,则没有任何其他情况可以表示 - 因此,bkirkbri's conclusion似乎正确地总结了事态:

  

它可能被内部和内部的其他头方法使用   只是因为只有某些标题可行。他们应该添加一个   在ObjectMetadata上设置setExpires方法,因为它是唯一的标头   没有它自己的方法

除此之外,我担心只有AWS SDK for Java团队本身可以提供一个明确的答案:像往常一样,您可能会在相应的AWS forum中提出问题,但是最近他们接受了移动中的问题GitHub repository也可能会为代码相关的问题提供更快更明确的结果。