有人访问Application.cfc时出现错误页面

时间:2012-11-30 20:35:41

标签: coldfusion coldfusion-9 application.cfc

我正在考虑某人可能会在网址中提供Application.cfc的情况。我知道这不会起作用,因为它由ColdFusion引擎保留,用户将看到错误。

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

3 个答案:

答案 0 :(得分:3)

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

小更新,想出来了:

<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>

答案 1 :(得分:1)

我认为CF拦截对application.cfc,application.cfm和onrequestend.cfm的调用,你可以抓住错误。

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

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

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

答案 2 :(得分:1)

嗯:您应该像处理网站上任何未被捕获的错误一样处理此类错误:将其留给onError()处理程序/ <cferror>代码/ site-wide error template。当你使用Application.cfc时,onError()是最好的方法。

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