我有一个 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 不起作用时,返回的是空白页。
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |