0

我编写了简单的重写规则来重写 .cfm 扩展链接(使用出站规则),并使用等效的入站规则解析为完整的 .cfm 路径。例子:

此出站链接:

http://mysite/section/page

解析到这个完整路径:

http://mysite/section/page.cfm

当我在任何浏览器中访问没有文件扩展名的链接时,页面会显示在屏幕上,但浏览器似乎仍在“等待”页面完成加载(在浏览器选项卡中获取那个旋转的圆圈,而 Firefox 说“正在传输来自我网站的数据...")

在“等待”页面加载大约 5 分钟后,浏览器将停止尝试加载并显示“无法显示页面”错误。我使用 Firebug 的 NET 面板查看发生了什么,基本上页面永远不会完成加载(文件大小保持 0kb 直到浏览器崩溃)。

如果我转到一个完全合格的路径页面,例如http://mysite/section/page.cfm,页面会在大约 20 毫秒内完全加载,Firebug 会给我页面的大小。

谁能建议发生了什么以及如何解决它?

4

1 回答 1

5

好的,我已经解决了它,或者实际上解决了它。

它是一个 ColdFusion 问题。如果其他人在这里遇到这种情况是您所做的:

  1. 创建一个 Application.cfc 页面。
  2. 将此功能添加到您的组件中:
<cffunction name="onRequestEnd">
    <cfheader name="Content-Length" value="#Len(getPageContext().getOut().getString())#" />
    <cfset getPageContext().flush()>
</cf函数>


所以这里发生的事情是我们将 Content-Length 标头设置为正确的大小,因为如果您让它自己做,ColdFusion 会搞砸它。结束无休止的页面加载的解决方法是getPageContext().flush()在设置 Content-Length 之后放置,以便浏览器获取所有页面内容。

坦率地说,我让它与一些谷歌搜索和随机黑客一起工作。这可能不是解决问题的正确方法(因为在 Firebug 中它说发生了 500 错误),但它似乎有效。

于 2013-09-14T16:50:35.100 回答