onrequeststart()ログインしたユーザーの属性にApplication.cfc基づいて、「禁止」/「許可されていない」リクエストをプログラムで処理する ColdFusion Web サイトがあります。たとえば (FYI:SESSION.Userは で初期化されonSessionStart()ます:
<cffunction name="onRequestStart" returnType="Boolean" output="false">
<cfargument name="targetPage" type="string" required="true">
<cfparam name="REQUEST.MinSecurityLevel" default="0" />
<cfparam name="REQUEST.IsLoginRequired" default="false" />
<cfif REQUEST.IsLoginRequired AND NOT SESSION.User.isLoggedIn()>
<cfscript>
SESSION.LoginMessage =
"Your session has timed out. Please log in again.";
SESSION.LastPageVisited =
getPageContext().getRequest().getRequestURI();
if (Len(Trim(getPageContext().getRequest().getQueryString())))
SESSION.LastPageVisited =
SESSION.LastPageVisited
& "?"
& getPageContext().getRequest().getQueryString();
</cfscript>
<cflocation url="/user/login/" addtoken="false" />
<cfelseif SESSION.User.getSecurityLevel() LT REQUEST.MinSecurityLevel>
<cfheader statuscode="403" statustext="Forbidden" />
</cfif>
<cfreturn true />
</cffunction>
IIS (バージョン 7) では、タイプ「実行 URL」とカスタム 403 ページ パスのエラー ページ設定があります。
これをトリガーすることができ、カスタム 403 ページが適切に表示されますが、HTTP 応答コード 200 が返されます。
これは 403 を返すべきではありませんか?