簡體   English   中英

webapp2如何從響應標頭中刪除Cache-Control:無緩存?

[英]webapp2 How to remove Cache-Control: no-cache from response header?

我在通過HTTPS(尤其是IE 8和IE 7瀏覽器)上提供appengine blobstore時遇到麻煩,因為該瀏覽器不喜歡通過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

我沒有在下載處理程序本身中使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM