相关疑难解决方法(0)

如何在所有浏览器中控制网页缓存?

我们的调查向我们表明,并非所有浏览器都以统一的方式尊重http缓存指令.

出于安全原因,我们不希望在我们的应用程序某些网页缓存,有史以来,通过Web浏览器.这必须至少适用于以下浏览器:

  • Internet Explorer 6+
  • Firefox 1.5+
  • Safari 3+
  • Opera 9+

我们的要求来自安全测试.从我们的网站注销后,您可以按后退按钮查看缓存页面.

https caching http http-headers

1474
推荐指数
17
解决办法
88万
查看次数

iOS 6上的Safari缓存$ .ajax结果吗?

自升级到iOS 6以来,我们看到Safari的Web视图可以自由地缓存$.ajax调用.这是在PhoneGap应用程序的上下文中,因此它使用Safari WebView.我们的$.ajax调用是POST方法,我们将缓存设置为false {cache:false},但仍然会发生这种情况.我们尝试手动添加TimeStamp标题,但它没有帮助.

我们做了更多研究,发现Safari只返回具有静态功能签名并且不会因呼叫而改变的Web服务的缓存结果.例如,想象一个名为:

getNewRecordID(intRecordType)
Run Code Online (Sandbox Code Playgroud)

该函数反复接收相同的输入参数,但每次返回的数据应该不同.

一定是苹果急于让iOS 6拉链令人印象深刻,他们对缓存设置感到满意.还有其他人在iOS 6上看到过这种行为吗?如果是这样,究竟是什么导致了它?


我们发现的解决方法是将函数签名修改为如下所示:

getNewRecordID(intRecordType, strTimestamp)
Run Code Online (Sandbox Code Playgroud)

然后总是传入一个TimeStamp参数,并在服务器端丢弃该值.这解决了这个问题.我希望这能帮助其他一些在这个问题上花费15个小时的穷人,就像我一样!

javascript ajax jquery caching mobile-safari

1057
推荐指数
13
解决办法
14万
查看次数

如何在Safari浏览器中禁用Ajax缓存?

我遇到了ajax缓存的问题,这也是IE浏览器中的问题,但我通过编写以下代码修复了它.

    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("expires","-1");
    response.setHeader("pragma","no-cache");
Run Code Online (Sandbox Code Playgroud)

但我看到MAC上的Safari4.0正在缓存Ajax请求(我们有一个要求支持这一点).火狐永远不会有问题.关于这个"Expire"我将它设置为-1,我看到很多地方设置0或者过去的旧日期.它会有所作为吗?

javascript java safari ajax caching

10
推荐指数
1
解决办法
7901
查看次数

修复后,Safari 11 X-XSRF-TOKEN未更新

最近,Safari 11在Mac OSX上发布.此更新导致我们的Web应用程序与我们的reuest标头上的XSRF结合使用时出现问题.我将尝试以逻辑方式描述问题.这就是好情况的样子:

  1. 当用户想要登录时,他从服务器接收带有Set-Cookie的响应,该Set-Cookie包含XSRF令牌的值. Eg: Set-Cookie: XSRF-TOKEN=LKNBX4DZhL708KjXNkgXnlxTDCNuhsZG1kTc2SFy498; Path=/; Secure

  2. 页面刷新将执行的下一个调用包含标头中的正确XSRF值.在服务器端,检查值等.来自前端的每个调用都将包含该XSRF令牌.

  3. 如果用户注销并想再次登录,则他的XSRF cookie将被新值覆盖,并且能够使用该令牌登录.

我们的问题情况(在Mac OSX上使用Safari 11,其他浏览器不显示此行为):

  1. 如果没有cookie存在,用户可以正常登录

  2. 但是,如果他想重新登录(在上一个会话之后),则会进行刷新.在第一次调用时,刷新其调用的XSRF令牌不会被新值替换,它们仍然包含来自前一会话的旧XSRF令牌.当我们检查此请求时,我们看到此请求中的cookie包含正确的值,但标头反映了旧令牌.

  3. 使用错误标题的此调用会导致会话在后端关闭,因此用户将被踢出会话.TLDR; 在Safari 11中,标题XSRF-TOKEN在刷新后不会相应地更新cookie值.我们在旧版本和其他浏览器上工作,我们认为这是一个Safar 11错误.

还有其他人遇到过类似的问题吗?在Safari 11中刷新页面后,请求的标头值是否未更新?

编辑:经过测试,我们发现在URL中放置时间戳作为查询参数会强制Safari 11发送正确的请求.似乎缓存了一些请求并忽略了更新的标头.

非常感谢!

safari header setcookie http-headers x-xsrf-token

7
推荐指数
1
解决办法
624
查看次数