我有一個ColdFusion網站,它基於登錄的用戶屬性以編程方式在onrequeststart()
的Application.cfc
中處理「禁止」/「未授權」請求。例如(FYI:SESSION.User
初始化在onSessionStart()
:禁止頁面是否總是以403代碼響應?
<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?
我對你的要求感到困惑。標題表明你問的是403代碼應該返回一個特定的情況,但你的問題似乎指出了一個問題,你試圖發回一個403代碼,但實際上得到一個200代碼返回。你能澄清嗎?如果是後者,我與使用ColdFusion處理的404代碼有同樣的問題。 – 2014-08-28 14:35:38
你想在cfheader之後立即做一個cfabort來停止所有未來的處理嗎?我認爲這將保證你獲得403回報。 – 2014-08-28 14:54:52
@RandyJohnson添加CFABORT具有相同的結果。謝謝,不過。 – 2014-08-28 14:56:12