我有一个带有缓存清单的HTML5 / Javascript(服务器上的PHP / MySQL)应用程序,它几乎可以在除Firefox之外的所有移动和桌面浏览器上运行。
当我删除缓存清单时,它在Firefox中运行正常。因此,Firefox中的缓存清单有些奇怪,我无法弄清楚。即使文件发送了Cache-Control:no-store,no-cache标头,它也会从缓存中加载文件。
该文件处理OAuth舞蹈以获取LinkedIn访问令牌并执行以下步骤:
但是,在Firefox(Windows 7上的16.0.2)上,我得到以下内容:
file.php不在缓存清单中。
基本上它没有转到第3步的响应标题中的位置,应该将它带到LinkedIn授权页面,但我无法弄清楚为什么不这样做。
有关如何解决此问题的任何想法?
如果您想重现此问题,请here's a link to a test event。尝试发送LinkedIn连接请求并观看Firebug。此活动的所有LinkedIn个人资料(除了我的)都是虚拟个人资料,因此不必担心向随机陌生人发送LinkedIn连接请求。您必须先使用电子邮件注册才能获得激活链接,但如果您愿意,可以使用一次性电子邮件地址。
我尝试过的一些事情:
答案 0 :(得分:0)
我通过重写我的LinkedIn / OAuth库解决了这个问题,以便它通过ajax完成所有操作,而不是通过PHP发送Location标头。
经过多次挫折之后,我发现了为什么会出现这个问题,所以希望这会帮助那些面临类似困境的人。
事实证明缓存清单不允许重定向到外部域(这可能在某处记录,但在搜索解决方案时它并没有显示给我)。
部分问题是我不知道重定向是导致问题的原因。我认为这只是缓存清单的奇怪之处。毕竟,它在Chrome和Safari上运行良好,我没有从Firebug获得任何有用的调试信息。
Here's a useful article on the gotchas of cache manifest(此问题列为问题#8)。
Here's a link to the HTML Offline Spec(这个问题似乎列在第6.7.6(4)节中,但该文件是如此不透明,我无法告诉它是否真正引用它。)