我有一个REST服务,它可以输出JSON或返回404,具体取决于是否存在匹配项。在现有的CF11设置中,我可以使用
生成404<cfthrow errorcode="404">
,但这显然在CF2018中不再起作用。为了生成404,我需要使用Java(如此处指示:How can I send HTTP Status Code and a Response messages to the client in ColdFusion?):
<cfscript>
getPageContext()
.getResponse()
.getResponse()
.sendError( JavaCast( 'int', 404 ), "" );
</cfscript>
这行得通,但是这让我感到好奇,所以我创建了一个小测试页(不是REST服务):
<cfparam name="URL.method" default="cfthrow" >
<cfif URL.method IS "cfthrow">
<cftry>
<cfthrow errorcode="404">
<cfcatch></cfcatch>
</cftry>
</cfif>
<cfif URL.method IS "cfheader">
<cfheader statuscode="404">
</cfif>
<cfif URL.method IS "java">
<cfscript>
getPageContext()
.getResponse()
.getResponse()
.sendError( JavaCast( 'int', 404 ), "" );
</cfscript>
</cfif>
我也无法在这里工作。但是cfheader确实可以正常工作,并且Java之一也可以正常工作。谁能解释为什么所有这些差异?仅供参考,我正在运行Win2012 / IIS。谢谢。
p.s。借助CF11上现有的REST服务,我永远无法获得
<cfheader statuscode="404">
要么工作,要么生成404。在我说404不起作用的所有情况下,返回的都是空白页。