常见的HTTP状态码(HTTPStatusCode)说明
最近的项⽬,经常会接触⼀些http相关的error code,查询了下相关定义作为熟悉了解。
状态代码有三位数字组成,第⼀个数字定义了响应的类别,且有五种可能取值:
1. 1xx:指⽰信息--表⽰请求已接收,继续处理
2. 2xx:成功--表⽰请求已被成功接收、理解、接受
3. 3xx:重定向--信息不完整需要进⼀步补充
4. 4xx:客户端错误--请求有语法错误或请求⽆法实现
5. 5xx:服务器端错误--服务器未能实现合法的请求
1xx
状态
英⽂名称状态码意义
100Continue这个临时响应是⽤来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
101Switching
Protocols换协议。服务器根据客户端的请求切换协议。只能切换到更⾼级的协议,例如,切换到HTTP的新版本协议。
102Processing由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执⾏。
2xx
状态
英⽂名称状态码意义
200OK请求成功。⼀般⽤于GET与POST请求,出现此状态码是表⽰正常状态。201Created已创建。成
功请求并创建了新的资源
202Accepted已接受。已经接受请求,但未处理完成
203Non-Authoritative
Information
服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,⽽是来⾃本地或者第三
⽅的拷贝。当前的信息可能是原始版本的⼦集或者超集。
204No Content⽆内容。服务器成功处理,但未返回内容。在未更新⽹页的情况下,可确保浏览器继续显⽰当前⽂档
205Reset Content重置内容。服务器处理成功,⽤户终端(例如:浏览器)应重置⽂档视图。可通过此返回码清除浏览器的表单域,以便⽤户能够轻松地开始另⼀次输⼊。
206Partial Content部分内容。服务器成功处理了部分GET请求,类似于迅雷这类的 HTTP下载⼯具是使⽤此类响应实现断点续传或者将⼀个⼤⽂档分解为多个下载段同时下载。
3xx
英⽂名称状态码意义
300Multiple
Choices多种选择。请求的资源可包括多个位置,相应可返回⼀个资源特征与地址的列表⽤于⽤户终端(例如:浏览器)选择。
301Moved
Permanently
永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会⾃动定向到新URI。今后任何新的请求都应使⽤新的URI代替。
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使⽤原有
303See Other 查看其它地址。对应当前请求的响应可以在另⼀个 URI 上被到,⽽且客户端应当采⽤ GET 的⽅式访问那个资源。这个⽅法的存在主要是为了允许由脚本激活的POST请求输出重定向到⼀个新的资源。这个新的 URI 不是原始资源的替代引⽤。
304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供⼀个头信息指出客户端希望只返回在指定⽇期之后修改的资源。
305Use Proxy使⽤代理。所请求的资源必须通过代理访问。
306Switch
Proxy在最新版的规范中,306状态码已经不再被使⽤。
307Temporary
Redirect临时重定向。与302类似。使⽤GET请求重定向。
4xx
英⽂名称状态码意义
400Bad Request客户端请求的语法错误,服务器⽆法理解,请求参数有误。
401Unauthorized请求要求⽤户的⾝份认证
402Payment Required该状态码是为了将来可能的需求⽽预留的。当前页面脚本发生错误
403Forbidden服务器理解请求客户端的请求,但是拒绝执⾏此请求
404Not Found服务器⽆法根据客户端的请求到资源(⽹页)。通过此代码,⽹站设计⼈员可设置”您所请求的资源⽆法到”的个性页⾯
405Method Not
Allowed客户端请求中的⽅法被禁⽌
406Not Acceptable请求的资源的内容特性⽆法满⾜请求头中的条件,因⽽⽆法⽣成响应实体
407Proxy
Authentication
Required
请求要求代理的⾝份认证,与401类似,但请求者应当使⽤代理进⾏授权
408Request Time-out服务器等待客户端发送的请求时间过长,超时
409Conflict服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发⽣了冲突
410Gone客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使⽤410代码,⽹站设计⼈员可通过301代码指定资源的新位置
411Length Required服务器⽆法处理客户端发送的不带Content-Length的请求信息
412Precondition Failed服务器在验证在请求的头字段中给出先决条件时,先决条件错误
413Request Entity Too
Large
由于请求的实体过⼤,服务器⽆法处理,因此拒绝请求。为防⽌客户端的连续请求,服务器可能会关闭连接。如
果只是服务器暂时⽆法处理,则会包含⼀个Retry-After的响应信息
414Request-URI Too
Large请求的URI过长(URI通常为⽹址),服务器⽆法处理
415Unsupported Media
Type服务器⽆法处理请求附带的媒体格式
416Requested range
not satisfiable客户端请求的范围⽆效
417Expectation Failed服务器⽆法满⾜Expect的请求头信息
421too many
connections从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最⼤范围。
422Unprocessable
Entity请求格式正确,但是由于含有语义错误,⽆法响应。
423Locked当前资源被锁定。
424Failed Dependency由于之前的某个请求发⽣的错误,导致当前请求失败,例如 PROPPATCH。5xx
英⽂名称状态码意义
500Internal Server
Error服务器内部错误,⽆法完成请求
501Not Implemented服务器不⽀持请求的功能,⽆法完成请求
502Bad Gateway充当⽹关或代理的服务器,从远端服务器接收到了⼀个⽆效的请求
503Service
Unavailable由于超载或系统维护,服务器暂时的⽆法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504Gateway Time-
out充当⽹关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version
not supported
服务器不⽀持请求的HTTP协议的版本,⽆法完成处理。这暗⽰着服务器不能或不愿使⽤与客户端相同的版本。响应
中应当包含⼀个描述了为何版本不被⽀持以及服务器⽀持哪些协议的实体。
600
600Unparseable Response Headers源站没有返回响应头部,只返回实体内容
常⽤的HTTP状态码:
2XX-请求成功、3XX-重定向、301-永久重定向、302-临时重定向、303-请求其他资源、4XX-客户端错误、401-未认证、403-被拒绝、404-资源不存在、405-不允许使⽤该⽅法、5XX服务器端错误、500-服务器内部错误、502-错误⽹关、503-服务不可⽤、504-⽹关超时。
NSURL Error Code List:
enum : NSInteger {
NSURLErrorUnknown = -1,
NSURLErrorCancelled = -999,
NSURLErrorBadURL = -1000,
NSURLErrorTimedOut = -1001,
NSURLErrorUnsupportedURL = -1002,
NSURLErrorCannotFindHost = -1003,
NSURLErrorCannotConnectToHost = -1004,
NSURLErrorNetworkConnectionLost = -1005,
NSURLErrorDNSLookupFailed = -1006,
NSURLErrorHTTPTooManyRedirects = -1007,
NSURLErrorResourceUnavailable = -1008,
NSURLErrorNotConnectedToInternet = -1009,
NSURLErrorRedirectToNonExistentLocation = -1010,
NSURLErrorBadServerResponse = -1011,
NSURLErrorUserCancelledAuthentication = -1012,
NSURLErrorUserAuthenticationRequired = -1013,
NSURLErrorZeroByteResource = -1014,
NSURLErrorCannotDecodeRawData = -1015,
NSURLErrorCannotDecodeContentData = -1016,
NSURLErrorCannotParseResponse = -1017,
NSURLErrorAppTransportSecurityRequiresSecureConnection = -1022,
NSURLErrorFileDoesNotExist = -1100,
NSURLErrorFileIsDirectory = -1101,
NSURLErrorNoPermissionsToReadFile = -1102,
NSURLErrorDataLengthExceedsMaximum = -1103,
NSURLErrorSecureConnectionFailed = -1200,
NSURLErrorServerCertificateHasBadDate = -1201,
NSURLErrorServerCertificateUntrusted = -1202,
NSURLErrorServerCertificateHasUnknownRoot = -1203,
NSURLErrorServerCertificateNotYetValid = -1204,
NSURLErrorClientCertificateRejected = -1205,
NSURLErrorClientCertificateRequired = -1206,
NSURLErrorCannotLoadFromNetwork = -2000,
NSURLErrorCannotCreateFile = -3000,
NSURLErrorCannotOpenFile = -3001,
NSURLErrorCannotCloseFile = -3002,
NSURLErrorCannotWriteToFile = -3003,
NSURLErrorCannotRemoveFile = -3004,
NSURLErrorCannotMoveFile = -3005,
NSURLErrorDownloadDecodingFailedMidStream = -3006,
NSURLErrorDownloadDecodingFailedToComplete = -3007,
NSURLErrorInternationalRoamingOff = -1018,
NSURLErrorCallIsActive = -1019,
NSURLErrorDataNotAllowed = -1020,
NSURLErrorRequestBodyStreamExhausted = -1021,
NSURLErrorBackgroundSessionRequiresSharedContainer = -995,
NSURLErrorBackgroundSessionInUseByAnotherProcess = -996,
NSURLErrorBackgroundSessionWasDisconnected = -997
};
-1(未知的错误)
-999(请求被取消)
-1000(请求的URL错误,⽆法启动请求)
-1001(请求超时)
-1002(不⽀持的URL Scheme)
-1003(URL的host名称⽆法解析,即DNS有问题)
-1004(连接host失败)
-1005(连接过程中被中断)
-1006(同- -1003)
-1007(重定向次数超过限制)
-
1008(⽆法获取所请求的资源)
-1009(断⽹状态)
-1010(重定向到⼀个不存在的位置)
-1011(服务器返回数据有误)
-1012(⾝份验证请求被⽤户取消)
-1013(访问资源需要⾝份验证)
-1014(服务器报告URL数据不为空,却未返回任何数据)
-1015(响应数据⽆法解码为已知内容编码)
-1016(请求数据存在未知内容编码)
-1017(响应数据⽆法解析)
-1018(漫游时请求数据,但是漫游开关已关闭)
-
1019(EDGE、GPRS等⽹络不⽀持电话和流量同时进⾏,当正在通话过程中,请求失败错误码)-1020(⼿机⽹络不允许连接)
-1021(请求的body流被耗尽)
-1100(请求的⽂件路径上⽂件不存在)
-1101(请求的⽂件只是⼀个⽬录,⽽⾮⽂件)
-1102(缺少权限⽆法读取⽂件)
-1103(资源数据⼤⼩超过最⼤限制)
// SSL errors
-1200(安全连接失败)
-1201(服务器证书过期)
-1202(不受信任的根服务器签名证书)
-1203(服务器证书没有任何根服务器签名)
-1204(服务器证书还未⽣效)
-1205(服务器证书被拒绝)
-1206(需要客户端证书来验证SSL连接)
-2000(请求只能加载缓存中的数据,⽆法加载⽹络数据)
// Download and file I/O errors
-3000(下载操作⽆法创建⽂件)
-3001(下载操作⽆法打开⽂件)
-3002(下载操作⽆法关闭⽂件)
-3003(下载操作⽆法写⽂件)
-3004(下载操作⽆法删除⽂件)
-3005(下载操作⽆法移动⽂件)
-
3006(下载操作在下载过程中,对编码⽂件进⾏解码时失败)-3007(下载操作在下载完成后,对编码⽂件进⾏解码时失败)