错误码
注意,阿里云网关的错误码是实时更新的,我们不可能及时跟踪。所以,我们采用一个灵活的做法
在不是200的错误里,
error = status*1000 reason = header["X-Ca-Error-Code"] message = header["X-Ca-Error-Code"]+":"+header["X-Ca-Error-Message"]
参考
错误代码 Http状态码 Message 描述
error status
status | error | error_ali | reason | Message | 描述 |
---|---|---|---|---|---|
400 | 400000 | I400HD | InvalidHeader | Invalid Header `${HeaderName}` ${Reason} | HTTP请求头非法 |
400 | 400000 | I400MH | MissingHeader | Header `${HeaderName}` is Required | 缺少HTTP请求头 |
400 | 400000 | I400BD | InvalidBody | Invalid Body: ${Reason} | HTTP请求包体非法 |
400 | 400000 | I400PA | InvalidRequestPath | Invalid Request Path `${Reason}` | HTTP请求路径非法 |
405 | 405000 | I405UM | UnsupportedMethod | Unsupported Method `${Reason}` | 不支持的HTTP请求方法 |
400 | 400000 | I400RU | InvalidRequestUri | Invalid Request Uri `${Reason}` | HTTP请求Url非法 |
403 | 403000 | I403PT | InvalidProtocol | Invalid protocol ${Protocol} unsupported | 使用了API配置中不支持的协议,请检查API配置 |
413 | 413000 | I413RL | RequestBodyTooLarge | Request body too Large | 请求包体过长 |
413 | 413000 | I413UL | RequestURLTooLarge | Request URL too Large | 请求URL过长 |
400 | 400000 | I400CT | InvalidContentType | Invalid Content-Type: `${Reason}` | 非法的`Content-Type` |
404 | 404000 | I404DO | InvalidDomain | Invalid Domain `${DomainName}` | 未知的请求域名 |
410 | 410000 | I410GG | InvalidGroupInstance | Group's instance invalid | 请求了非法的实例,分组可能已经不属于当前实例 |
400 | 400000 | I400SG | InvalidStage | Invalid Stage | 请求了未知的环境 |
404 | 404000 | I404NF | APINotFound | API not found ${Reason} | 根据请求的`Path, Method`在当前的环境中未找到API |
400 | 400000 | X400PM | InvalidPluginMeta | Invalid plugin meta ${PluginName} ${Reason} | 插件元数据非法,请工单联系客服人员 |
500 | 500000 | X500ED | ExpiredApi | Expired api definition | API元数据定义非法,请工单联系客服人员 |
500 | 500000 | X500AM | InvalidApiMeta | Invalid Api Meta, try deploy again or contact us via ticket | API元数据定义非法,请工单联系客服人员 |
403 | 403000 | X403DG | BadDomainOrGroup | Bad Domain or Group: ${Reason} | 分组数据非法,请工单联系客服人员 |
451 | 451000 | B451DO | UnavailableDomain | Unavailable Domain for Legal Reasons | 域名因法律法规问题被禁 |
451 | 451000 | B451GO | UnavailableGroup | Unavailable Group for Legal Reasons | 分组因法律法规问题被禁 |
403 | 403000 | B403OD | ProviderAccountOverdue | Provider Account Overdue | API提供方欠费 |
400 | 400000 | A400AC | InvalidAppCode | Invalid AppCode ${Reason} | 当使用AppCode模式授权时,未找到AppCode |
400 | 400000 | A400IK | InvalidAppKey | Invalid AppKey | 当使用`Key/Secret`签名授权时,未找到AppKey |
403 | 403000 | A403IS | InvalidSignature | Invalid Signature, Server StringToSign:`${StringToSign}` | 签名不匹配,请参考API网关签名文档 |
403 | 403000 | A403EP | AppAuthorizationExpired | App authorization expired | 授权已过期 |
403 | 403000 | A403PR | PluginAuthorizationNeeded | Plugin Authorization Needed | 需要插件授权 |
400 | 400000 | A400MA | NeedAuthorization | Need authorization, `X-Ca-Keyor Authorization: APPCODE ...` is required |
需要使用`Key/Secret签名授权或 AppCode`授权 |
400 | 400000 | I400I5 | InvalidContent-MD5 | Invalid Content-MD5 ${Reason} | 不匹配的`Content-MD5` |
400 | 400000 | I400NC | MissingXCaNonce | X-Ca-Nonce is required | 当设置了`使用X-Ca-Nonce防重放选项时,必须提供 X-Ca-Nonce`头 |
403 | 403000 | S403NU | NonceUsed | Nonce Used | 检测到请求重放,请求的`X-Ca-Nonce`头重复 |
403 | 403000 | S403TE | XCaTimestampExpired | X-Ca-Timestamp is expired | `X-Ca-Timestamp`头中提供的时间戳已过期 |
400 | 400000 | I400MP | MissingParameter | Parameter `${ParameterName}` is required | API中配置的必选参数未传值 |
400 | 400000 | I400IP | InvalidParameter | Invalid parameter `${ParameterName}` ${Reason} | API中配置的参数值非法 |
400 | 400000 | I400JR | MissingJWT | JWT required | 未找到JWT参数 |
403 | 403000 | S403JI | MissingJTI | Claim `jtiis required when preventJtiReplay:true` |
当在`JWT授权插件中配置了防重放功能时,请求未提供有效的 jti` |
403 | 403000 | A403SV | JTIUsed | Claim `jti` in JWT is used | 当在`JWT授权插件中配置了防重放功能时,请求提供的 jti`已被使用 |
400 | 400000 | I400JD | JWTDeserializeFailed | JWT Deserialize Failed: `${Token}` | 请求中提供的`JWT`解析失败 |
403 | 403000 | A403JT | InvalidJWT | Invalid JWT: ${Reason} | 请求中提供的`JWT`非法 |
403 | 403000 | A403JK | NoMatchingJWK | No matching JWK, `${kid}` not found | 请求`JWT中的 kid没有匹配的 JWK` |
403 | 403000 | A403JE | JWTExpired | JWT is expired at `${Date}` | 请求中提供的`JWT`已过期 |
400 | 400000 | I400JP | InvalidJWTConfig | Invalid JWT plugin config: ${JWT} | `JWT授权`插件配置错误 |
403 | 403000 | A403OL | OAuth2LoginFailed | OAuth2 Login failed: ${Reason} | |
403 | 403000 | A403OU | OAuth2GetUserFailed | OAuth2 Get User Info failed: ${Reason} | |
401 | 401000 | A401OT | InvalidOAuth2 | Invalid OAuth2 Access Token | |
401 | 401000 | A401OM | MissingOAuth2 | OAuth2 Access Token is required | |
429 | 429000 | T429ID | Throttled | Throttled by INNER DOMAIN Flow Control, ${Domain} is a test domain, only 1000 requests per day | 当使用默认二级域名访问时,限制1000次/天,请绑定正式域名以解除这个限制 |
429 | 429000 | T429IN | Throttled | Throttled by INSTANCE Flow Control | 触发当前实例的流控限制 |
429 | 429000 | T429GR | Throttled | Throttled by GROUP Flow Control | 触发当前分组的流控限制 |
429 | 429000 | T429PA | Throttled | Throttled by API Flow Control | 触发插件上的默认API流控 |
429 | 429000 | T429PR | Throttled | Throttled by PLUGIN Flow Control | 触发插件的特殊流控 |
429 | 429000 | T429UP | Throttled | Throttled by Usage Plan Flow Control | 触发使用计划的流控 |
429 | 429000 | T429SR | Throttled | Throttled by SERVER Flow Control | |
429 | 429000 | T429MR | Throttled | Too Many Requests, throttle by `${Description}` | |
403 | 403000 | A403IP | AccessDenied | Access denied by IP Control Policy | 被`IP访问控制插件`阻止访问 |
403 | 403000 | A403IN | AccessDisabled | Access from internet is disabled ${Reason} | `API或 API分组`禁止从公网访问 |
403 | 403000 | A403VN | AccessDisabled | Access from invalid VPC is disabled | 来源VPC被阻止 |
403 | 403000 | A403AC | AccessForbidden | Access Control Forbidden by ${RuleName} | 被`授权控制`插件阻止 |
403 | 403000 | A403CO | ResourceForbidden | Cross origin resource forbidden ${Domain} | 被CORS策略阻止访问 |
404 | 404000 | I404CO | ResourceNotFound | Cross origin resource not found ${Method} - ${Path} | 根据CORS预检请求中的Path与Method,无法找到API定义 |
404 | 404000 | I404CH | ContentNotCached | Content not cached, with `Cache-Control:only-if-cached` | |
404 | 404000 | I404NR | ResourceNotFound | ${Resource} not found | |
404 | 404000 | I404SR | StageRouteMissing | Stage route missing: ${Reason} | |
403 | 403000 | B403MO | ApiOverdue | Api Market Subscription overdue | API提供商欠费 |
403 | 403000 | B403MQ | ApiExhausted | Api Market Subscription quota exhausted | 购买的云市场API配额已耗尽 |
403 | 403000 | B403ME | ApiExpired | Api Market Subscription expired | API订购关系已过期 |
403 | 403000 | B403MI | InvalidApi | Api Market Subscription invalid | API市场订购关系非法 |
504 | 504000 | D504RE | BackendError | Backend domain `${Domain}` resolve failed | 后端域名解析失败 |
504 | 504000 | D504IL | BackendError | Backend domain `${Domain}resolve to illegal address ${Address}` |
后端域名解析结果非法 |
504 | 504000 | D504CO | BackendError | Backend service connect failed `${Reason}` | 后端连接失败,请检查安全组、后端服务器启动状态、或防火墙配置 |
504 | 504000 | D504CS | BackendError | Backend http ssl connect failed `${Reason}` | 后端HTTPS连接失败,请检查后端配置的协议与端口是否匹配 |
504 | 504000 | D504TO | BackendTimeout | Backend service request timeout | 后端请求超时 |
504 | 504000 | X504VE | BackendError | Backend service vpc mapped failed | 后端VPC映射错误,请工单联系客服人员 |
503 | 503000 | D503BB | BackendError | Backend circuit breaker busy | API被断路器阻止 |
503 | 503000 | D503CB | BackendError | Backend circuit breaker open, ${Reason} | API处于熔断/断路器开状态,请检查后端性能 |
508 | 508000 | I508LD | LoopDetected | Loop Detected | 检测到环回调用 |
404 | 404000 | I404DD | DeviceNotFound | Device id ${DeviceId} not found | 当使用WebSocket双向通信调用时,DeviceId未找到 |
403 | 403000 | A403FC | FunctionARInvalid | Function Compute AssumeRole failed ${RequestId}:${Reason} | 后端是函数计算时授权错误 |
502 | 502000 | D502FC | FunctionResponseInvalid | Function Compute response invalid: ${Reason} | 后端是函数计算时,来自后端的应答非法 |
500 | 500000 | X500ER | ServiceInternalError | Service Internal Error | 服务器内部错误,请工单联系工作人员 |
503 | 503000 | X503BZ | ServiceBusy | Service Busy | API网关服务忙,请稍后再试或工单联系工作人员 |
504 | 504000 | X504TO | ServiceTimeout | Service timeout | API网关处理超时 |
参考来源
地球号使用共享VPC. 本章节的错误代码表适用于VPC共享实例和VPC专享实例,如果您使用的是经典网络实例请参见下一节。
当客户端收到的应答中X-Ca-Error-Code头不为空,表示应答码由API网关产生,错误码由一个6位长度的字符描述,请参考下表,而X-Ca-Error-Message表示错误的应答信息,用于描述改场景下更详细的一些错误信息。 如果X-Ca-Error-Code头为空,则表示这个Http应答码由后端服务产生,API网关透传了来自后端的错误信息。