1

特に IE 8 および IE 7 ブラウザーを使用している場合、HTTPS 経由で appengine ブロブストアを提供するのに問題があります。ブラウザーは https 経由でダウンロード可能なコンテンツを提供することを好まないからです。Microsoft の記事によると、これはCache-Control: no-cacheヘッダーが原因です。

http://blogs.msdn.com/b/ieinternals/archive/2009/10/02/internet-explorer-cannot-download-over-https-when-no-cache.aspx

この記事で提案されている解決策は、応答から 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
4

1 に答える 1

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

于 2012-10-18T19:49:15.763 に答える