如何在ColdFusion中向客户端发送HTTP状态代码和响应消息?

时间:2017-07-10 10:09:24

标签: coldfusion cfc

我正在实施单点登录功能。我有一个ColdFusion应用程序,它从Java应用程序(POST请求)获取输入参数。我需要做的是返回状态代码和描述,以指示用户是否具有访问权限以及如果用户无权访问我的CF应用程序的失败原因。 如下所示: enter image description here

我创建了一个cfc并将其作为API提供,以允许Java用户将其UserName,CustomerID传递给我的CF应用程序。 我是否需要在同一个文件中编写返回响应逻辑?就像一个“抛出”错误代码的函数(cfthrow)。

或者我可以使用“cfheader”....这样的事情:

<cfif form.CustomerId EQ queryname.CustID>
<CFHEADER 
    STATUSCODE="200"
    STATUSTEXT="Success">

<cfelse>
 <CFHEADER 
    STATUSCODE="400"
    STATUSTEXT="Insufficient Input">
</cfif>

有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

您可以使用:

component restpath = "your/rest/path" rest="true"
{
  remote void function errorTest()
    httpmethod = "GET"
    restpath   = ""
  {
    cfheader(
      statuscode = 401,
      statustext = "Invalid Password"
    );

    // or

    restSetResponse({
      status = 401,
      headers = { explanation = "Invalid Password" }
    });

    // or, using Java

    getPageContext()
        .getResponse()
        .getResponse()
        .sendError( JavaCast( 'int', 401 ), "Invalid Password" );

    // or, using the deprecated setStatus(int,string) method in Java

    getPageContext()
        .getResponse()
        .getResponse()
        .setStatus( JavaCast( 'int', 401 ), "Invalid Password" );
  }
}

注意:我还没有找到使用restSetResponse()直接设置邮件的方法,因此会返回带有邮件的自定义标头。