这是我当天的问题.假设我在一个页面上有这个:
start.cfm
<cfset body = { "stuff": [ 1,2,3,4,5 ] }>
<cfhttp url="end.cfm" method="post" result="httpResp" timeout="60">
<cfhttpparam type="header" name="Content-Type" value="application/json">
<cfhttpparam type="body" value="#serializeJSON(body)#">
</cfhttp>
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚end.cfm需要输出什么在体内.我试过cfdump从变量到形式到cgi的所有东西,但我无法达到它.我错过了什么?
我有一个 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。谢谢。 …