CF11 与 CF2018 REST 404 响应

Sun*_*ung 5 rest coldfusion

我有一个 REST 服务,它要么输出 JSON,要么返回 404,具体取决于是否匹配。在我现有的 CF11 设置中,我可以生成一个 404

<cfthrow errorcode="404">
Run Code Online (Sandbox Code Playgroud)

但这显然不再适用于 CF2018。为了生成 404,我需要使用 Java(按照此处的指示:如何向 ColdFusion 中的客户端发送 HTTP 状态代码和响应消息?):

<cfscript>
    getPageContext()
    .getResponse()
    .getResponse()
    .sendError( JavaCast( 'int', 404 ), "" );
</cfscript>
Run Code Online (Sandbox Code Playgroud)

这有效,但这让我很好奇,所以我创建了一个小测试页面(不是 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>
Run Code Online (Sandbox Code Playgroud)

我也无法让 cfthrow 在这里工作。但是 cfheader 确实有效,而且正如预期的那样,Java 也有效。谁能解释为什么会有这些差异?仅供参考,我正在运行 Win2012/IIS。谢谢。

ps 使用 CF11 上现有的 REST 服务,我永远无法获得

<cfheader statuscode="404">
Run Code Online (Sandbox Code Playgroud)

要么工作,要么生成 404。在所有情况下,当我说 404 不起作用时,返回的是空白页。