【问题标题】:Why doesn't Internet Explorer display a correct XML transform when returning to a page via the back button?通过后退按钮返回页面时,为什么 Internet Explorer 不显示正确的 XML 转换?
【发布时间】:2012-04-11 10:00:51
【问题描述】:

我在 Delphi 应用程序中生成一些 XML 数据,以响应 HTTP GET 请求,使用TIdHTTPServer 检测它并发送响应。 XML 链接到 XSLT 样式表以呈现 HTML 页面。这工作正常,页面显示正常。

然后我单击页面中的链接以导航到另一个级别的数据,再次一切正常。问题是如果我再点击返回,之前的页面会重新显示,但是一些数据(不是全部)不同,但是我的服务器没有收到另一个HTTP GET请求来生成XML。如果我在 IE 中单击 refresh,那么我的服务器会收到一个 HTTP GET 并正确地重新生成页面。

如果我使用其他浏览器,它始终可以正常工作。我已经尝试添加 META 标记来停止 XSLT 中的页面缓存,但这并没有什么区别。 IE 不会重新请求页面。

我宁愿不发布特定的 XML 数据作为其敏感的客户数据。

【问题讨论】:

  • 附注感谢 Dimitre 的编辑。

标签: xml delphi internet-explorer


【解决方案1】:

我会尝试为您的 XML 源文件设置正确的缓存控制 HTTP 标头。请参阅维基百科中的标题描述:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Avoiding_caching

【讨论】:

  • 我已经将它们放入用于转换 XML 数据的 XSLT 中,服务器只返回引用 XSLT 的 XML。我是否将这些标头放入 XML 而不是 XSLT 中?
  • HTTP 标头是 Web 服务器与文件一起发送的附加属性。因此,您必须调整您的网络服务器设置以设置所需的标头。请参阅服务器文档。
  • 您可以使用“Firebug”浏览器扩展程序或任何 HTTP 流量监视器来检查您当前拥有的标头。例如:stackoverflow.com/questions/1271768/…
  • 啊哈!明白。我将“无缓存”放在 XSLT 转换中,认为它会阻止源 XML 缓存。我已将它放入源 XML 的服务器响应中,并且它现在不缓存。回答接受。非常感谢。
猜你喜欢
  • 2011-04-12
  • 2011-03-31
  • 2011-07-28
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 2020-10-02
相关资源
最近更新 更多