http錯誤代碼含義
來源:不詳
操作失敗的可能因素
大多數操作失敗的原因不外乎下列幾種:網絡連接故障,防火墻設置不當,IIS 權限問題。一般而言,網絡故障容易發現。舉例來說, 如果你的網絡不能傳輸任何數據,那么問題極有可能出在網絡硬件上。如果本地網絡正常,從外面卻不能訪問你的網站,那么就該查查端口80是不是被防火墻禁止了,只要作個簡單的端口掃描(port sniffing)就明確了。?
我打算根據人們對本文的回應情況重新撰寫一篇完整的故障診斷指南。然而本文僅僅討論由于權限問題引起的 IIS 的操作失敗。
建立安全日志
IIS 連接故障的診斷,第一步是對故障的現象有個清楚的了解。此時經常需要查看你的事件日志。然而,你得先做一些設置,否則事件日志里的信息對你毫無用處。
既然這里討論的是與權限有關的 IIS 操作故障,那么我們勢必要用到安全日志。因此先得重新配置安全日志:告訴 IIS 我們要記錄什么,然后停止 IIS ,再清空安全日志,最后重新啟動 IIS 服務。也許你會奇怪:為什么要停止 IIS 服務?因為 IIS 有時把安全日志記錄寫入 cache (緩存)。如果不重新啟動 IIS ,那么當你清空日志以后,cache 中的記錄馬上又會被寫入。很明顯,這種信息將被誤認為當前記錄而將你引入歧途。因此,我強烈推薦停止并重新啟動 IIS 服務。
現在開始設置 IIS。首先,進入 Program | Administrative Tools | Computer Management。然后,找到Services and Applications | Internet Information Services。展開 Internet Information Services 項顯示網站。在有問題的網站名稱上點右鍵,選取 Properties 打開屬性頁,現在,點屬性頁中的 Web Site 項,選中 Enable Logging 項以開啟日志。此時,你會看到一個列表讓你選擇日志文件格式。我推薦使用 W3C Extended 格式,點 Properties 按鈕,選 Extended Logging Properties (擴展日志屬性頁)。
默認情況下,屬性頁中的 General Properties (一般屬性) 已被選中。在這里可以設定隔多久產生新的記錄文件,這個值的大小無所謂,自己選吧。擴展屬性頁比較重要。在這里你可以選擇哪些信息需要保存到日志里。你可以自由選擇,但是至少應該包括如下幾項:
Date (日期),Time (時間),Client IP Address (客戶 IP 地址),User Name (用戶名),Method (方法),HTTP Status (HTTP 狀態)和 Win32 Status (Win32 狀態)。
選擇完畢以后,點 OK ,再點 OK ,就可以回到計算機管理界面了。
既然已經配置好了網站記錄選項,我們就來清空cache (高速緩存) 和日志記錄吧。第一步:停止所有的 IIS 服務。方法是:進入 DOS 命令提示方式(Program | Accessories | Command Prompt),在 DOS 提示窗口中鍵入命令:
NET STOP IISADMIN/Y
只需這一個命令就能停止所有的 IIS 服務。完成后,離開 DOS 提示窗口,進入 Programs | Administrative tools | Event Viewer (事件查看器)。在 Security Log (安全日志) 上點右鍵,選 Clear All Events (清除所有事件)。好,現在已經清空了 cache 和安全日志,可以重起 IIS 了。回到 DOS 提示窗口,鍵入4行命令:
NET START W3SVC
NET START MSFTPSVC
NET START NNTPSVC
NET START SMTPSVC
注意了,這些命令不是對每個人都需要的。例如,舉例來說,如果你沒有運行 FTP 服務,那么你就不必鍵入與 FTP 有關的命令(譯者注:W3SVC - WEB ,MSFTPSVC - FTP,NNTPSVC - NNTP,SMTPSVC - SMTP)。
檢查安全日志
現在你已經設置好了安全日志,可以創建日志項了。試著訪問有故障的網站。我建議,如果可能的話,嘗試從公司內部和外部,從許多人的機器上訪問它。因為這樣可以得到許多有用的日志記錄,通過對它們的比較分析可以大大幫助找出問題的根源。也許,你會發現只有從公司內部能夠訪問,而從外部不行;或者,只有授權用戶能夠訪問,而匿名用戶不行。等等。
當你整理安全日志項目時,我推薦你首先看看錯誤代碼為 401 和 403 的日志項目。代碼為 401 和 403 的錯誤有很多。但是一旦有了確切的代碼,你就得到了極為重要的線索。下面列出許多 401 和 403 錯誤及其含義:
401;1 非法操作:登錄失敗
401;2 非法操作:服務器設置錯誤導致的登錄失敗
401;3 非法操作:使用控制列表 (ACL) 項目
401;4 非法操作:IIS 過濾器阻止存取
401;5 非法操作:ISAPI 或 CGI 應用程序
403;1 操作禁止:沒有執行權限
403;2 操作禁止:沒有讀取權限
403;3 操作禁止:沒有寫入權限
403;4 操作禁止:要求 SSL
403;5 操作禁止:要求 128位 SSL
403;6 操作禁止:IP 地址被拒絕
403;7 操作禁止:要求客戶證書
403;8 操作禁止:拒絕存取站點
403;9 操作禁止:當前連接的用戶太多
403;10 操作禁止:設置錯誤
403;11 操作禁止:密碼不正確
403;12 操作禁止:要求有效的客戶證書
403;13 操作禁止:客戶證書已作廢
403;14 操作禁止:拒絕列目錄
403;15 操作禁止:超過許可的客戶數目
403;16 操作禁止:客戶存取證書非法或尚未認證
403;17 操作禁止:客戶存取證書過期或尚未升效
試試看,從你的安全日志中找到 401 和 403 錯誤,跟上述列表對照一下,或許能有幫助呢?如果還是沒找到原因,請看下一節。那里將討論特殊的權限問題和解決辦法。
連接失敗的其他可能因素
如果問題還是沒有解決,那么就要考慮 IIS 的提示信息是否正確了。特別是當你的 ASP 代碼中有 <!-- #include --!> 時更要小心了。?
舉個例子,假設你在訪問 DEFAULT.ASP 遇到了 access denied (拒絕操作)錯誤。有一種可能是,你確實有訪問 DEFAULT.ASP 的權限,但是沒有訪問它所 include (引用)的其它頁面的權限。比如:DEFAULT.ASP 中引用 TOOLS.ASP,而 TOOLS.ASP 內有某種 ACL 區塊,則你訪問 DEFAULT.ASP 時當然會 access denied 了。本例中,DEFAULT.ASP 本身是正確的,但它包含的某個組件卻有問題。IIS 不會直接調用它的組件,只會在包含組件的頁面報告錯誤。于是在訪問 DEFAULT.ASP 時就出錯了。
幸運的是,要確定組件是不是操作失敗的根源并不難:把所有 include 行都注釋掉;如果問題消失,那么你就可以肯定問題出在某些組件上了;然后, 把 include 行逐個恢復,恢復一個就訪問一次網頁,觀察一次提示信息。如此就能很快確定是哪一行引起的問題了。
檢查你的帳戶
還有一個故障診斷技術是:從安全日志中查看訪問網頁時用的是哪個帳號。也許出于某種原因,用了不恰當的帳號來訪問網站。如果是這樣,就容易解釋為什么會出現 access denied 了。即使找到的是正確的帳號,你也能確定用的是哪個帳號。這樣你就可以自信地檢查該帳戶的 ACL 了,因為你已經知道問題在哪了。
檢查帳戶的權限時,還有一些注意事項。比如,帳戶必須對網站及其子目錄所在的文件夾有 NTFS 級訪問權限。類似地,你也要檢查該帳戶是否有本地登錄或遠程登錄權限。
料想不到的錯誤
偶然地,使用者可能需要被設為只讀權限,但是你卻得到錯誤信息說用戶需要寫入或刪除權限。通常,如果這些意外錯誤發生在一個新網站時,并不代表你的系統有安全漏洞。它可能僅僅是因為網頁上的某些組件需要寫入或刪除權限。計數器就是一個例子。
匿名訪問
絕大多數網站使用匿名訪問。也就是說,使用者不必輸入帳號和密碼。然而,為了安全起見,身份驗證仍然在進行,只是用戶看不見而已。匿名訪問的原理是使用網站上的某個特定帳戶。使用匿名訪問時,該帳號必須存在,擁有合法的密碼,尚未過期,而且未被刪除。其余的標準安全機制也在進行,比如:帳戶的 ACL 或指定登錄時長等。?
為了確定用于匿名訪問的帳號,你可以在計算機管理界面的 virtual server (虛擬服務器)上點右鍵,選取 Properties 即可。當屬性頁出現時,點 Directory Security (目錄安全),在其中的 Anonymous Access and Authentication Control (匿名操作和驗證控制)欄點 Edit 按鈕。此時會出現 Authentication 對話框。確定 Anonymous Access 項已被選中,然后點 Edit 按鈕就可以看到是哪一帳戶被使用。
結論
我們看到,IIS 的權限及其相關的故障是復雜多變的。但是,利用合理的方法來追查問題的根源,你就能夠輕松地解決它們。
http錯誤代碼含義:
"100" : Continue
"101" : witching Protocols
"200" : OK
"201" : Created
"202" : Accepted
"203" : Non-Authoritative Information
"204" : No Content
"205" : Reset Content
"206" : Partial Content
"300" : Multiple Choices
"301" : Moved Permanently
"302" : Found
"303" : See Other
"304" : Not Modified
"305" : Use Proxy
"307" : Temporary Redirect
"400" : Bad Request
"401" : Unauthorized
"402" : Payment Required
"403" : Forbidden
"404" : Not Found
"405" : Method Not Allowed
"406" : Not Acceptable
"407" : Proxy Authentication Required
"408" : Request Time-out
"409" : Conflict
"410" : Gone
"411" : Length Required
"412" : Precondition Failed
"413" : Request Entity Too Large
"414" : Request-URI Too Large
"415" : Unsupported Media Type
"416" : Requested range not satisfiable
"417" : Expectation Failed
"500" : Internal Server Error
"501" : Not Implemented
"502" : Bad Gateway
"503" : Service Unavailable
"504" : Gateway Time-out
"505" : HTTP Version not supported
posted on 2006-05-19 00:38 record java and net 閱讀(379) 評論(0) 編輯 收藏 所屬分類: xml and html