403 Forbidden
網站為什麼會出現403 Forbidden?如何解決?|天矽科技網頁設計
網站出現403 Forbidden的原因,是因為客戶端沒有存取與訪問資源的權限,但伺服器是可以正常解析與請求的,可能是因為IP被阻擋,或是被防火牆認定為不安全所以才會回傳403 Forbidden。
403錯誤原因
什麼是403?為什麼網站會發生403錯誤?
403 Forbidden 是HTTP協定中的一個狀態碼,表示伺服器雖然有成功解析請求,但是客戶端沒有存取資源的權限,簡單來說就是不允許我們去訪問資源的意思。
根據曾經的案例(網站有第三方登入功能)與宏遠電訊的回覆說明:
Q:
- Google回傳的網址,被主機的防火牆判定為不安全 403(拒絕存取/禁止存取)。
- Google回傳網址:
A:
- 查詢為ModSecurity阻擋了Google OAuth驗證,在規則 id 「210580」中阻擋了「.profile」字串,目前已先將此規則bypass,測試使用google登入正常。
- 查到原因為主機更新,Google回傳的網址,被主機的防火牆判定為不安全,所以403(拒絕存取/禁止存取)。※主機已針對此特殊規格, 做安全性調整。
另外,IIS(Internet Information Server)提供了 IP限制的機制,我們可以限制某些IP不能訪問站點,或限制只有某些IP可以訪問,若該IP被阻止或不再允許範圍,則會出現403錯誤。
※ IIS(Internet Information Server)是微軟伺服器Windows Server上,管理各種電腦網路服務的整合介面,如Web(網站/網頁)、FTP(檔案傳輸)、SMTP(電子郵件)…等,皆由IIS部屬管理。
當然,重新整理F5是一個不錯的選擇,若仍然無法進入網站,則建議聯絡網站的主機商,另外在IIS上,403還有其子錯誤代碼。
403子錯誤代碼
在IIS上,403有其他的子錯誤代碼,以下為微軟的網際網路資訊服務所反饋,雖然這些代碼不被 IANA(Internet Assigned Numbers Authority)網際網路號碼分配局所認可,但仍可參考。
- 403.1:禁止執行存取。
- 403.2:禁止讀取存取。
- 403.3:禁止寫入存取。
- 403.4:需要SSR。
- 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:客戶端憑證已過期或尚未有效。
- 403.18:無法執行來自此應用程式池的請求。
- 403.19:無法為客戶端執行此應用程式池中的CGI。
- 403.20:認證登入失敗。
- 403.21:拒絕源存取。
- 403.22:無限深度被拒絕。
- 403.502:來自客戶端IP的請求過多;已達到動態IP限制。
403錯誤解決辦法
- 重新整理
跟我們前面提到的一樣,點選F5重新整理、刷新頁面是一個不錯的辦法,可以姑且一試,因為有時候403錯誤只是短暫的,刷新頁面或許能解決問題。 - 清除瀏覽器Cookie和緩存
具有錯誤的頁面可能已經儲存在我們瀏覽器的緩存中,但實際的網站連結可能已經被更改,所以可以透過「清除瀏覽器Cookie和緩存」來嘗試解決403錯誤。 - 稍後再試
如果我們已經嘗試處理,但仍無法獲得解決時,我們可以稍等一段時間再回來,也許在我們嘗試的期間,已經有人正在積極處理這個網站的問題。 - 聯繫主機或網際網路服務商(ISP)
如果你是網站擁有者,建議直接與主機或ISP服務商聯繫,讓他們知道目前所碰到的問題,並協助處理;如果你不是網站的擁有者,那麼網站可能不適合你的IP或權限,也許可以聯絡ISP服務商,因為某些公共IP可能會因為某些原因而被阻止。
HTTP 4XX 客戶端錯誤
當網站出現4XX錯誤時,表示客戶端可能發生了錯誤,妨礙了伺服器的處理,這些4系列的狀態碼包含以下。
- 400 Bad Request
明顯的客戶端錯誤,如格式錯誤的請求與法、太大的檔案大小、無效的請求或欺騙性請求,伺服器則不能或不會處理。 - 401 Unauthorized
與403類似,401表示未認證,也就是用戶「沒有必要的憑據」,當網站、網域禁止IP地址時,代碼會顯示401吉表示該特定地址被拒絕訪問網站。 - 402 Payment Required
這個狀態碼通常不被使用,是為了將來可能的需求而預留的。Google Developers API會使用此狀態碼,在特定開發人員已超過請求的每日限制時。 - 403 Forbidden
服務器已經理解請求,但是拒絕執行它。 - 404 Not Found
請求失敗,請求的資源沒有在伺服器上,但允許用戶的後續請求。 - 405 Method Not Allowed
請求方式不被允許,可能會因為網站伺服器沒有被設定為「從客戶端接受輸入資料」而出現。 - 406 Not Acceptable
請求的資源內容特性無法滿足請求中的條件,因而無法生成響應實體,不接受改請求。 - 407 Proxy Authentication Required
與401類似,不過客戶端必須在伺服器上進行身分驗證。 - 408 Request Timeout
請求超時。 - 409 Conflict
請求存在衝突,無法處理該請求,如多個同步更新之間的編輯衝突。 - 410 Gone
表示所請求的資源不再可用,多數伺服器端不會使用此狀態碼,而是直接使用404狀態碼。 - 411 Length Required
伺服器拒絕在沒有定義Content-Length頭的情況下接受請請求。 - 412 Precondition Failed
伺服器在驗證Request header字段中給出先決定件時,沒能滿足其中一個或多個。 - 413 Request Entity Too Large
伺服器拒絕處理當前請求,因請求提交的實體數據大小,超過伺服器願意或能處理的範圍。 - 414 Request-URI Too Long
表示請求的URL長度超過了伺服器能解釋的長度。 - 415 Unsupported Media Type
對於當前請求的方法和資源,並非伺服器中可支援的格式,因此請求拒絕。 - 416 Requested Range Not Satisfiable
客戶端已要求文件的一部份(Byte serving),但伺服器無法提供該部分。 - 417 Expectation Failed
在Request header的Expect中,指定的預期內容無法被伺服器滿足,或是此伺服器Expect的內容無法被滿足。 - 421 Misdirected Request
無法產生響應的伺服器。 - 422 Unprocessable Entity
請求格式正確,但語意錯誤而無法響應。 - 423 Locked
當前資源被鎖定。 - 424 Failed Dependency
之前的某個請求發生錯誤,導致當前請求失敗。 - 425 Too Early
伺服器拒絕處理在Early Data中的請求,規避可能的replay attack網路攻擊。 - 426 Upgrade Required
客戶端應切換到Upgrade 的Request Header Fields中,給出的不同協定。 - 428 Precondition Required
原伺服器要求該請求須滿足一定條件。 - 429 Too Many Requests
使用者在給定的時間內,傳送了太多次的請求。 - 431 Request Header Fields Too Large
伺服器不願意處理請求,因為一個或多個Request Header Fields過大。 - 440 Login Time-out
客戶端session逾時失效,需要重新登入。 - 451 Unavailable For Legal Reasons
因法律原因不可用。當使用者請求某個經政府審核,查詢後方法後認定不合法的來源時,就會顯示451。
資料參考
✔ 維基百科|HTTP 403
✔ 維基百科|HTTP狀態碼
✔ iT邦幫忙|伺服器架站無法訪問的解決方案
✔ Begin-it|什麼是403禁止錯誤(以及如何修復它)?