有人访问应用程序.cfc 时的错误页面



我只是在考虑有人可能会在URL中提供Application.cfc的情况。我知道这行不通,因为它是由 ColdFusion 引擎保留的,用户会看到一个错误。

在这种情况下是否可以重定向用户?

我刚刚用站点范围的错误处理程序成功捕获了它。 这对您来说是一个可行的解决方案吗?

小更新,想通了:

<cftry>
    <cfif error.Message EQ "Invalid request of Application.cfm, Application.cfc, or OnRequestEnd.cfm file.">
        <cflocation url="#getContextRoot()#/#getDirectoryFromPath(error.Template)#">
    </cfif>
    <cfcatch>that didn't work</cfcatch>
</cftry>

我认为 CF 拦截了对 application.cfc、application.cfm 和 onrequestend.cfm 的调用,您可以在其中抓取错误。

我刚刚在我的一个coldfusion开发站点上做了一些测试,并将application.cfc放在定义的IIS网站主文件夹之前的父文件夹上,并尝试调用该文件。 它返回了"找不到文件"的 404 错误。 由于 coldfusion 会搜索到根文件夹以查找该文件,因此即使它不在 IIS 可访问的文件夹中,它仍会找到您的 application.cfc 文件。 IIS 将直接请求打开 404 错误。

处理您的 404 错误可能是解决方案。

我认为这也是非Windows服务器环境的解决方案。

好吧:您应该像处理网站上任何未捕获的错误一样处理此类错误:将其留给onError()处理程序/<cferror>代码/站点范围的错误模板。当你使用Application.cfc时,onError()是这里最好的方法。

此类错误不需要特殊处理,但应适当处理任何类型的未处理错误。如果你没有这样做(听起来你没有),你应该这样做。

最新更新