У меня есть служба REST, которая либо выводит JSON, либо возвращает 404, в зависимости от того, есть ли совпадение. В моей существующей установке CF11 я могу сгенерировать 404 с
<cfthrow errorcode="404">
но это, по-видимому, больше не работает в CF2018. Чтобы сгенерировать 404, мне нужно использовать Java (как указано здесь: Как я могу отправить код состояния HTTP и ответные сообщения клиенту в 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. С моим существующим сервисом REST на CF11 я так и не смог получить
<cfheader statuscode="404">
для работы либо для генерации 404. Во всех случаях, когда я говорю, что 404 не работает, возвращается пустая страница.