文件不响应https上的应用程序缓存更新,而是响应http

时间:2014-07-29 14:35:05

标签: html5 iis iis-7 https application-cache

我们有一个配置为使用html缓存清单缓存所有文件并脱机工作的webapp。我们的应用程序主要通过Google Chrome运行。

直到最近,我们还没有必要在https上运行,并且所有内容都按照预期通过http执行。但是,它通过https缓存所有图像(可能还有其他文件,但图像是重要的一部分),并且可以放弃它们。拒付它们。

我们的发布流程如下:

  1. 将较新的图像文件发布到服务器上的正确位置(IIS inetpub / wwwroot /.../ images文件夹)
  2. 更新缓存清单末尾的注释版本号以强制更新
  3. webapp会在下次刷新时自动更新(它会这样做)
  4. 我们期望发生的是新图像会立即开始出现,但事实并非如此。即使直接通过https://CLIENTDOMAIN/relpath/image.png访问,图片也会加载为原始缓存的图片。如果图像是通过http在同一路径上加载的,它会正确显示新图像!

    如果图像是通过https在从未加载它的浏览器上加载的(例如firefox或opera),那么不正确的旧缓存图像将仍然显示在https上,但会显示为http上的新图像。重新启动IIS没有任何效果,也没有通过镶边设置删除所有特定网站数据(Settings->Advanced Settings->Content Settings->All Cookies and Site Data->Specific Domain

    现在,我怀疑问题出在IIS的深处,所以这里是我们正在使用的IIS设置,我们通过IIS GUI进行所有更改:

    IIS Settings
    
    Our webapp runs off Default Website
    
    Output Caching: disabled completely
    Bindings: *:80 and *:443
    SSL Settings: Not Required, ignore client certs
    Everything else is likely standard.
    

    缓存清单: 我已经用CLIENTDOMAIN替换了域名,我们的软件名称用OURBRAND或BRAND替换为简短版本,只是为了安全。

    CACHE MANIFEST
    
    #html
    index.html
    BRAND.html
    #favicon.ico
    
    #images
    https://CLIENTDOMAIN/images/accept.png
    https://CLIENTDOMAIN/images/add.png
    https://CLIENTDOMAIN/images/watermark.png
    https://CLIENTDOMAIN/images/BRAND_Icon_Round32x32.png
    https://CLIENTDOMAIN/images/BRAND_Icon_Square57x57.png
    https://CLIENTDOMAIN/images/break.png
    https://CLIENTDOMAIN/images/calendar.png
    https://CLIENTDOMAIN/images/clock.png
    https://CLIENTDOMAIN/images/clock1.png
    https://CLIENTDOMAIN/images/delete.png
    https://CLIENTDOMAIN/images/display.png
    https://CLIENTDOMAIN/images/downArrow.png
    https://CLIENTDOMAIN/images/editgroup.png
    https://CLIENTDOMAIN/images/filter.png
    https://CLIENTDOMAIN/images/group.png
    https://CLIENTDOMAIN/images/graph.png
    https://CLIENTDOMAIN/images/hours.png
    https://CLIENTDOMAIN/images/information.png
    https://CLIENTDOMAIN/images/left.png
    https://CLIENTDOMAIN/images/lock.png
    https://CLIENTDOMAIN/images/loginInformation.png
    https://CLIENTDOMAIN/images/minus.png
    https://CLIENTDOMAIN/images/more.png
    https://CLIENTDOMAIN/images/notes.png
    https://CLIENTDOMAIN/images/notes1.png
    https://CLIENTDOMAIN/images/person.png
    https://CLIENTDOMAIN/images/person1.png
    https://CLIENTDOMAIN/images/plus.png
    https://CLIENTDOMAIN/images/Remove.png
    https://CLIENTDOMAIN/images/right.png
    https://CLIENTDOMAIN/images/search.png
    https://CLIENTDOMAIN/images/text.png
    https://CLIENTDOMAIN/images/time.png
    https://CLIENTDOMAIN/images/timesheet.png
    https://CLIENTDOMAIN/images/upArrow.png
    https://CLIENTDOMAIN/images/user.png
    https://CLIENTDOMAIN/images/usercheckSelected.png
    https://CLIENTDOMAIN/images/weekly.png
    https://CLIENTDOMAIN/images/daily.png
    https://CLIENTDOMAIN/images/weekly1.png
    https://CLIENTDOMAIN/images/daily1.png
    https://CLIENTDOMAIN/images/checkOut.png
    https://CLIENTDOMAIN/images/checkIn.png
    https://CLIENTDOMAIN/images/check.png
    https://CLIENTDOMAIN/images/telephone.png
    https://CLIENTDOMAIN/images/ajax-loader.gif
    https://CLIENTDOMAIN/images/expandArrow.png
    https://CLIENTDOMAIN/images/collapseArrow.png
    https://CLIENTDOMAIN/images/sign.png
    https://CLIENTDOMAIN/images/signedIcon.png
    https://CLIENTDOMAIN/images/unsign.png
    https://CLIENTDOMAIN/images/addsign.png
    https://CLIENTDOMAIN/images/sideArrow.png
    https://CLIENTDOMAIN/images/downArrow.png
    https://CLIENTDOMAIN/images/sideArrow2.png
    https://CLIENTDOMAIN/images/qty.png
    https://CLIENTDOMAIN/images/qty1.png
    https://CLIENTDOMAIN/images/extra.png
    https://CLIENTDOMAIN/images/extra1.png
    https://CLIENTDOMAIN/images/noHours.png
    https://CLIENTDOMAIN/images/sigCheckYes.png
    https://CLIENTDOMAIN/images/sigCheckNo.png
    https://CLIENTDOMAIN/images/userSigYes.png
    https://CLIENTDOMAIN/images/userSigNo.png
    https://CLIENTDOMAIN/images/bothSigYes.png
    https://CLIENTDOMAIN/images/empSigYes.png
    https://CLIENTDOMAIN/images/empSigNo.png
    https://CLIENTDOMAIN/images/deleteArrow.png
    https://CLIENTDOMAIN/images/target.png
    https://CLIENTDOMAIN/images/graph1.png
    https://CLIENTDOMAIN/images/transferHours.png
    https://CLIENTDOMAIN/images/percentCalc.png
    https://CLIENTDOMAIN/images/defaults.png
    https://CLIENTDOMAIN/images/workOrder.png
    https://CLIENTDOMAIN/images/workOrder1.png
    https://CLIENTDOMAIN/images/footerRight.png
    https://CLIENTDOMAIN/images/footerLeft.png
    https://CLIENTDOMAIN/images/equipCheck.png
    https://CLIENTDOMAIN/images/equipCheck1.png
    https://CLIENTDOMAIN/images/activeTab.png
    https://CLIENTDOMAIN/images/inactiveTab.png
    https://CLIENTDOMAIN/images/prefs.png
    https://CLIENTDOMAIN/images/ServiceDetail.png
    https://CLIENTDOMAIN/images/Rehab.png
    https://CLIENTDOMAIN/images/detailReportClient.png
    https://CLIENTDOMAIN/images/detailReportDate.png
    https://CLIENTDOMAIN/images/detailReportTime.png
    https://CLIENTDOMAIN/images/memoUp.png
    https://CLIENTDOMAIN/images/memoDown.png
    https://CLIENTDOMAIN/images/rehabUp.png
    https://CLIENTDOMAIN/images/rehabDown.png
    #Branding Images
    images/AppIcon.png
    images/AppIconTransparent.png
    
    https://CLIENTDOMAIN/js/jQuery/images/ajax-loader.png
    https://CLIENTDOMAIN/js/jQuery/images/form-check-off.png
    https://CLIENTDOMAIN/js/jQuery/images/form-check-on.png
    https://CLIENTDOMAIN/js/jQuery/images/form-radio-off.png
    https://CLIENTDOMAIN/js/jQuery/images/form-radio-on.png
    https://CLIENTDOMAIN/js/jQuery/images/icons-18-white.png
    https://CLIENTDOMAIN/js/jQuery/images/icons-36-white.png
    https://CLIENTDOMAIN/js/jQuery/images/icon-search-black.png
    
    #javascript
    #https://CLIENTDOMAIN/js/ALDB/ALDB-min.js 
    https://CLIENTDOMAIN/js/ALDB/ALDB.js 
    https://CLIENTDOMAIN/js/ALDB/wsproxy.js
    config.js
    
    https://CLIENTDOMAIN/js/jQuery/jquery.mobile-1.0.min.js
    https://CLIENTDOMAIN/js/jQuery/jquery-1.7.1.min.js
    
    https://CLIENTDOMAIN/js/utilities/mdetect.js
    https://CLIENTDOMAIN/js/utilities/jquery.crypt.js
    https://CLIENTDOMAIN/js/utilities/jquery.xml2json.pack.js
    
    https://CLIENTDOMAIN/js/simpleWeather/jquery.simpleWeather.js
    https://CLIENTDOMAIN/js/exif.js
    
    # UNCOMMENT NEXT FOUR LINES TO RELEASE
    https://CLIENTDOMAIN/js/ALUI/UXCore.js
    https://CLIENTDOMAIN/js/ALUI/UXTime.js
    https://CLIENTDOMAIN/js/ALUI/UXProd.js
    https://CLIENTDOMAIN/js/ALUI/UXMed.js
    
    https://CLIENTDOMAIN/js/sigpad/jquery.signaturepad.min.js
    https://CLIENTDOMAIN/js/sigpad/json2.min.js
    https://CLIENTDOMAIN/js/sigpad/excanvas-r3.min.js
    https://CLIENTDOMAIN/js/sigpad/excanvas-r71.min.js
    
    https://CLIENTDOMAIN/js/iscroll/src/iscroll.js
    https://CLIENTDOMAIN/js/iscroll/add2home.js
    
    https://CLIENTDOMAIN/js/jQuery/jQuery.ui.datepicker.js
    https://CLIENTDOMAIN/js/jQuery/jquery.ui.datepicker.mobile.js
    
    #css
    # UNCOMMENT NEXT LINE TO RELEASE
    https://CLIENTDOMAIN/css/ALUX.css
    https://CLIENTDOMAIN/css/add2home.css
    #https://CLIENTDOMAIN/js/jQuery/jquery.mobile-1.0a4.1.min.css
    https://CLIENTDOMAIN/js/jQuery/jquery.mobile-1.0.min.css
    
    https://CLIENTDOMAIN/js/sigpad/jquery.signaturepad.css
    
    https://CLIENTDOMAIN/js/jQuery/jquery.mobile.datepicker.css
    
    NETWORK:
    https://CLIENTDOMAIN:443/OURBRAND/WebSyncProvider.asmx
    cache.manifest
    http://maps.gstatic.com/
    http://csi.gstatic.com/
    http://maps.google.com/
    http://maps.googleapis.com/
    http://query.yahooapis.com/
    http://l.yimg.com/
    # COMMENT NEXT LINE TO RELEASE
    #*
    #v635421628124296068
    

    HTML加载缓存清单和所有webapp标头:

    <html lang="en" manifest="cache.manifest">
        <head>
            <title>BRAND</title>
            <!-- Enable the homescreen app on mobile devices -->
            <meta name="apple-mobile-web-app-capable" content="yes" />
            <meta name="mobile-web-app-capable" content="yes" />
    
            <!-- Enable the App Icon -->
            <link rel="icon" type="image/png" sizes="196x196" href="images/AppIcon.png">
            <link rel="apple-touch-icon" href="images/AppIcon.png">
            <link rel="apple-touch-startup-image" href="https://CLIENTDOMAIN/OURBRAND/images/iPhoneStartup.png">
    
            <meta name="apple-mobile-web-app-status-bar-style" content="black" />
            <meta name="viewport" content="width=device-width" />
            <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, height=device-height, width=device-width" />
    
            <meta http-equiv="content-language" content="en">
    
            ...
    

    我不知所措,应用程序缓存很难按原样进行调试,没有出现所有这些奇怪的问题。如果我能提供更多信息以帮助某人指出我正确的方向,请告诉我!

1 个答案:

答案 0 :(得分:1)

在清单中为https定义资源路径时,请仅使用相对路径以遵守相同的原始策略:

&#34;通过SSL,清单中的所有资源都必须遵守同源策略。 也就是说,所有路径必须是相对的,或指向与当前页面相同的主机和端口上的资源。

Google Chrome是一个例外,它在这方面并不遵守规范。通过SSL,Chrome将加载来自不同来源的资源,只要它们仍通过SSL提供。&#34;

另外,请确保您的证书有效。

http://appcache.offline.technology/