我无法通过HTTPS服务appengine blobstore,特别是IE 8& IE 7浏览器,因为浏览器不喜欢通过https提供可下载的内容。 根据一篇微软文章,这是因为 Cache-Control:no-cache 标题。
本文中提出的解决方案是从响应中删除Cache-Control:no-cache标头。 但是,即使我尝试将其设置为其他内容,webapp2似乎也会自动添加此标头。
根据源代码,它似乎被添加到每个响应中 http://code.google.com/p/webapp-improved/source/browse/webapp2.py#362
def __init__(self, *args, **kwargs):
"""Constructs a response with the default settings."""
super(Response, self).__init__(*args, **kwargs)
self.headers['Cache-Control'] = 'no-cache'
有没有办法覆盖这种行为?
这是我在构建响应时尝试做的事情,但是一旦呈现响应,仍然会出现“Cache-Control:no-cache”。
self.response.headers['Pragma'] = 'cache-control'
self.response.headers['Cache-Control'] = 'private'
self.response.cache_control.no_cache = None
self.response.cache_control.public = False
self.response.cache_control.max_age = 1
答案 0 :(得分:0)
我不在下载处理程序本身中使用webapp2。它看起来像这样:
class DynServe(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
(key, _, _) = resource.rpartition('.')
blob_info = blobstore.BlobInfo.get(key)
self.send_blob(blob_info, save_as=True)
app = webapp2.WSGIApplication(
[
('/dynserve/([^/]+)?', DynServe),
], debug=True)
def main():
app.run()
提供如下的pdf:/ dynserve / {{blob-key}}。pdf