net::ERR_FAILED的网络项目在manifest.cache



我的缓存清单文件看起来像:

CACHE MANIFEST
calendar.html
scripts/jquery.js
scripts/calendar.js
NETWORK:
https://apis.google.com/js/client.js

我的calendar.html看起来像:

<html manifest="calendar.cache">
  <head>
    <script src="scripts/jquery.js" type="text/javascript"></script>
    <script src="scripts/calendar.js" type="text/javascript"></script>
    <script src='https://apis.google.com/js/client.js?onload=checkAuth'></script>
  </head>
  <body>
    <div id="authorize-div" style="display: inline">
      <span>Authorize access to Google Calendar API</span>
      <!--Button for the user to click to initiate auth sequence -->
      <button id="authorize-button">
        Authorize
      </button>
    </div>
    <pre id="output"></pre>
    <script>
    $(document).ready(function(){
        console.log("ready");
    })
    </script>
  </body>
</html>

如果我禁用缓存,一切工作正常。但是,当启用缓存时,我得到apis.google.com/js/client.js文件的错误。错误是jquery.js:5 GET https://apis.google.com/js/client.js?onload=checkAuth&_=1474962265124 net::ERR_FAILED。这是谷歌chrome浏览器,但我得到一个类似的错误火狐浏览器。我错过了什么?

这是由于您传递给client.js ie的那些参数造成的。?onload=checkAuth

在web中,当你传递任何参数时,请求被认为是唯一的。对于浏览器来说manifest中声明的脚本是不一样的

https://apis.google.com/js/client.js // script A
https://apis.google.com/js/client.js?onload=checkAuth //script B ≠ script A

但是在calendar.cache中,您仅将脚本A声明为非缓存。所以现在你可以猜测将manifest更改为下面将解决这个问题

CACHE MANIFEST
calendar.html
scripts/jquery.js
scripts/calendar.js
NETWORK:
https://apis.google.com/js/client.js?onload=checkAuth

Ofc只是删除onload=checkAuth也可以工作,如果你不需要回调。只需擦除整个缓存并重新加载即可看到魔法!

相关内容

  • 没有找到相关文章

最新更新