HTTP狀態碼分類


前言:

我們經常使用瀏覽器發出http請求,那么對於請求返回的狀態,對於開發人員來講,我們必須要明白其所代表的含義,如:

常見狀態嗎:400(請求無效),401(需要權限),500(服務器錯誤),

今天本人就遇到了400錯誤,無效請求,后來檢查發現是,post請求傳入的參數類型錯誤了:

public class TestData{

  public string ID{get;set;}

  public string Name{get;set;}

  public int SortNo{get;set;}

}

【httppost】

Public void testAction(TestData data){

     //result

}

頁面請求:

$http({
  url: seagull2Url.getPlatformUrl(configURL.AddNotic),
  method: 'POST',
  data: {"ID":"a","Name":"aaa","SortNo":""},
}).success(function (data) {
  if (data.state == true) {
    alert("保存成功");
  }
}).error(function (ex, state) {
  console.log(ex);
});

這里的錯誤就是傳入的對象里的屬性:SortNo原本應該傳int數字,這里卻給了一個空值,請求就會返回400錯誤。

對於400錯誤具體的信息,可以通過瀏覽器的調式功能,找出ex對象的錯誤屬性找到詳細信息。

{"message":"請求無效。","modelState":{"bannerEntity.SortNo":["Error converting value {null} to type 'System.Int32'. Path 'SortNo', line 1, position 69."]}}

 

正文:

HTTP狀態碼分類

HTTP狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,后兩個數字沒有分類的作用。HTTP狀態碼共分為5種類型:

HTTP狀態碼分類

分類

分類描述

1**

信息,服務器收到請求,需要請求者繼續執行操作

2**

成功,操作被成功接收並處理

3**

重定向,需要進一步的操作以完成請求

4**

客戶端錯誤,請求包含語法錯誤或無法完成請求

5**

服務器錯誤,服務器在處理請求的過程中發生了錯誤

HTTP狀態碼列表:

HTTP狀態碼列表

狀態碼      

狀態碼英文名稱

中文描述

100

Continue

繼續。客戶端應繼續其請求

101

Switching Protocols

切換協議。服務器根據客戶端的請求切換協議。只能切換到更高級的協議,例如,切換到HTTP的新版本協議

 

200

OK

請求成功。一般用於GET與POST請求

201

Created

已創建。成功請求並創建了新的資源

202

Accepted

已接受。已經接受請求,但未處理完成

203

Non-Authoritative Information

非授權信息。請求成功。但返回的meta信息不在原始的服務器,而是一個副本

204

No Content

無內容。服務器成功處理,但未返回內容。在未更新網頁的情況下,可確保瀏覽器繼續顯示當前文檔

205

Reset Content

重置內容。服務器處理成功,用戶終端(例如:瀏覽器)應重置文檔視圖。可通過此返回碼清除瀏覽器的表單域

206

Partial Content

部分內容。服務器成功處理了部分GET請求

 

300

Multiple Choices

多種選擇。請求的資源可包括多個位置,相應可返回一個資源特征與地址的列表用於用戶終端(例如:瀏覽器)選擇

301

Moved Permanently

永久移動。請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI。今后任何新的請求都應使用新的URI代替

302

Found

臨時移動。與301類似。但資源只是臨時被移動。客戶端應繼續使用原有URI

303

See Other

查看其它地址。與301類似。使用GET和POST請求查看

304

Not Modified

未修改。所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源。客戶端通常會緩存訪問過的資源,通過提供一個頭信息指出客戶端希望只返回在指定日期之后修改的資源

305

Use Proxy

使用代理。所請求的資源必須通過代理訪問

306

Unused

已經被廢棄的HTTP狀態碼

307

Temporary Redirect

臨時重定向。與302類似。使用GET請求重定向

 

400

Bad Request

客戶端請求的語法錯誤,服務器無法理解

401

Unauthorized

請求要求用戶的身份認證

402

Payment Required

保留,將來使用

403

Forbidden

服務器理解請求客戶端的請求,但是拒絕執行此請求

404

Not Found

服務器無法根據客戶端的請求找到資源(網頁)。通過此代碼,網站設計人員可設置"您所請求的資源無法找到"的個性頁面

405

Method Not Allowed

客戶端請求中的方法被禁止

406

Not Acceptable

服務器無法根據客戶端請求的內容特性完成請求

407

Proxy Authentication Required

請求要求代理的身份認證,與401類似,但請求者應當使用代理進行授權

408

Request Time-out

服務器等待客戶端發送的請求時間過長,超時

409

Conflict

服務器完成客戶端的PUT請求是可能返回此代碼,服務器處理請求時發生了沖突

410

Gone

客戶端請求的資源已經不存在。410不同於404,如果資源以前有現在被永久刪除了可使用410代碼,網站設計人員可通過301代碼指定資源的新位置

411

Length Required

服務器無法處理客戶端發送的不帶Content-Length的請求信息

412

Precondition Failed

客戶端請求信息的先決條件錯誤

413

Request Entity Too Large

由於請求的實體過大,服務器無法處理,因此拒絕請求。為防止客戶端的連續請求,服務器可能會關閉連接。如果只是服務器暫時無法處理,則會包含一個Retry-After的響應信息

414

Request-URI Too Large

請求的URI過長(URI通常為網址),服務器無法處理

415

Unsupported Media Type

服務器無法處理請求附帶的媒體格式

416

Requested range not satisfiable

客戶端請求的范圍無效

417

Expectation Failed

服務器無法滿足Expect的請求頭信息

 

500

Internal Server Error

服務器內部錯誤,無法完成請求

501

Not Implemented

服務器不支持請求的功能,無法完成請求

502

Bad Gateway

充當網關或代理的服務器,從遠端服務器接收到了一個無效的請求

503

Service Unavailable

由於超載或系統維護,服務器暫時的無法處理客戶端的請求。延時的長度可包含在服務器的Retry-After頭信息中

504

Gateway Time-out

充當網關或代理的服務器,未及時從遠端服務器獲取請求

505

HTTP Version not supported

服務器不支持請求的HTTP協議的版本,無法完成處理

 

常見錯誤的處理方法:

500錯誤

500錯誤是站長經常遇到的問題,就本人的經驗,原因及解決方法歸納如下:

1、運行的用戶數過多,對服務器造成的壓力過大,服務器無法響應,則報HTTP500錯誤。

這個原因是網站報500錯誤的最主要原因,很多網站為什么突然會報500錯誤(service unavailable)呢?90%是由於空間壓力過大,超出了空間商設定的上限而造成的。

遇到這個問題,最好是第一時間找到空間商的售后服務,他們一般會幫你回收一下應用程序池,問題便得到解決。如果沒有找到售后服務,可以自己在空間管理后台,找到“回收應用程序池”那個項目,自己手動執行一下即可。不過,一些空間管理后台並沒有提供該項服務。

2、如果排除了第1的可能性,那么很大原因便是程序上出現了問題。

可以做個簡單的測試頁面,看是否能運行成功,再檢測報錯的頁面,從而針對性的進行修改。

該做關聯的地方沒有去做關聯,則報HTTP500錯誤。進行手工或者自動關聯,問題得到解決。

3、如果測試中所進行的操作需要向數據庫中插入數據,若大數據量的情況下導致數據庫中表空間已滿,或者緩沖池較小無法滿足數據的存取等,都有可能導致HTTP500錯誤。

解決方法是調整數據庫、修改連接池大小等等,根據個人具體情況進行修正即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM