阿里云http服务器请求格式的简单介绍

HttpDNS功能说明及实现

HTTPDNS使用HTTP协议进行域名解析,代替现有基于UDP的DNS协议,域名解析请求直接发送到阿里云的HTTPDNS服务器,从而绕过运营商的Local DNS,能够避免Local DNS造成的域名劫持问题和调度不精准问题。

创新互联公司专注于霍邱网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供霍邱营销型网站建设,霍邱网站制作、霍邱网页设计、霍邱网站官网定制、微信小程序开发服务,打造霍邱网络公司原创品牌,更为您提供霍邱网站排名全网营销落地服务。

HTTPDNS代替了传统的LocalDNS完成递归解析的功能,基于HTTP协议的设计可以适用于几乎所有的网络环境,同时保留了鉴权、HTTPS等更高安全性的扩展能力,避免恶意攻击劫持行为。

传统域名解析的调度精准性问题,本质根源在于Local DNS的部署和分配机制上。由于碎片化的管理方式,这些环节的服务质量同样很难得到保障。HTTPDNS在递归解析实现上优化了与权威DNS的交互,通过a name=""edns-client-subnet/a协议将终端用户的IP信息直接交付给权威DNS,这样权威DNS就可以忽略Local DNS IP信息,根据终端用户的IP信息进行精准调度,避免Local DNS的坐标干扰

服务端提供API接口,app端直接通过ip地址访问,ip地址可以有多个

请求方式:HTTP GET

URL参数说明:

请求示例:

考虑到服务IP防攻击之类的安全风险,为保障服务可用性,HTTPDNS同时提供多个服务IP,当某个服务IP在异常情况下不可用时,可以使用其它服务IP进行重试。

错误码列表如下:

异常下的出错兼容逻辑,主要包括异步请求,重试,降级

异步请求

重试

降级

OkHttp默认使用系统DNS服务InetAddress进行域名解析,但同时也暴露了自定义DNS服务的接口,通过该接口我们可以优雅地使用HttpDns。

OkHttp暴露了一个Dns接口,通过实现该接口,我们可以自定义Dns服务:

创建OkHttpClient对象,传入OkHttpDns对象代替默认Dns服务:

相比于通用方案,OkHttp+HttpDns有以下两个主要优势:

基于NSURLProtocol可拦截iOS系统上基于上层网络库NSURLConnection/NSURLSession发出的网络请求;

通过以下接口注册自定义NSURLProtocol,用于拦截上层网络请求,并创建新的网络请求接管数据发送、接收、重定向等处理逻辑,将结果反馈给原始请求。

自定义NSURLProtocol处理过程概述:

阿里云调用 API 服务后返回什么结果

返回结果

调用 API 服务后返回数据采用统一格式,返回的 HTTP 状态码为 2xx,代表调用成功;返回 4xx 或 5xx 的 HTTP 状态码代表调用失败。调用成功返回的数据格式主要有 XML 和 JSON 两种,外部系统可以在请求时传入参数来制定返回的数据格式,默认为 XML 格式。本文档中的返回示例为了便于用户查看,做了格式化处理,实际返回结果是没有进行换行、缩进等处理的。

成功结果:

错误结果

调用接口出错后,将不会返回结果数据。调用方可根据每个接口对应的错误码以及下述 2.3.3 的公共错误码来定位错误原因。当调用出错时,HTTP 请求返回一个 4xx 或 5xx 的 HTTP 状态码。返回的消息体中是具体的错误代码及错误信息。另外还包含一个全局唯一的请求 ID:RequestId 和一个您该次请求访问的站点 ID:HostId。在调用方找不到错误原因时,可以联系阿里云客服,并提供该 HostId 和 RequestId,以便我们尽快帮您解决问题。

公共错误码

错误代码

描述

Http 状态码

语义

MissingParameter    The input parameter “Action” that is mandatory for processing this request is not supplied    400    缺少 Action 字段  

MissingParameter    The input parameter “AccessKeyId” that is mandatory for processing this request is not supplied    400    缺少 AccessKeyId 字段  

MissingParameter    An input parameter “Signature” that is mandatory for processing the request is not supplied.    400    缺少 Signature 字段  

MissingParameter    The input parameter “TimeStamp” that is mandatory for processing this request is not supplied    400    缺少 Timestamp 字段  

MissingParameter    The input parameter “Version” that is mandatory for processing this request is not supplied    400    缺少 Version 字段  

InvalidParameter    The specified parameter “Action or Version” is not valid.    400    无效的 Action 值(该 API 不存在)  

InvalidAccessKeyId.NotFound    The Access Key ID provided does not exist in our records.    400    无效的 AccessKeyId 值(该 key 不存在)  

Forbidden.AccessKeyDisabled    The Access Key is disabled.    403    该 AccessKey 处于禁用状态  

IncompleteSignature    The request signature does not conform to Aliyun standards.    400    无效的 Signature 取值(签名结果错误)  

InvalidParamater    The specified parameter “SignatureMethod” is not valid.    400    无效的 SignatureMethod 取值  

InvalidParamater    The specified parameter “SignatureVersion” is not valid.    400    无效的 SignatureVersion 取值  

IllegalTimestamp    The input parameter “Timestamp” that is mandatory for processing this request is not supplied.    400    无效的 Timestamp 取值(Timestamp 与服务器时间相差超过了 1 个小时)  

SignatureNonceUsed    The request signature nonce has been used.    400    无效的 SignatureNonce(该 SignatureNonce 值已被使用过)  

InvalidParameter    The specified parameter “Action or Version” is not valid.    400    无效的 Version 取值  

InvalidOwnerId    The specified OwnerId is not valid.    400    无效的 OwnerId 取值  

InvalidOwnerAccount    The specified OwnerAccount is not valid.    400    无效的 OwnerAccount 取值  

InvalidOwner    OwnerId and OwnerAccount can’t be used at one API access.    400    同时使用了 OwnerId 和 OwnerAccount  

Throttling    Request was denied due to request throttling.    400    因系统流控拒绝访问  

Throttling    Request was denied due to request throttling.    400    该 key 的调用 quota 已用完  

InvalidAction    Specified action is not valid.    403    该 key 无权调用该 API  

UnsupportedHTTPMethod    This http method is not supported.    403    用户使用了不支持的 Http Method(当前 TOP 只支持 post 和 get)  

ServiceUnavailable    The request has failed due to a temporary failure of the server.    500    服务不可用  

UnsupportedParameter    The parameter ”” is not supported.    400    使用了无效的参数  

InternalError    The request processing has failed due to some unknown error, exception or failure.    500    其他情况  

MissingParameter    The input parameter OwnerId,OwnerAccount that is mandatory for processing this request is not supplied.    403    调用该接口没有指定 OwnerId  

Forbidden.SubUser    The specified action is not available for you。    403    无权调用订单类接口  

UnsupportedParameter    The parameter ”” is not supported.    400    该参数无权使用  

Forbidden.InstanceNotFound    The specified Instance is not found, so we cann’t get enough information to check permission in RAM.    404    使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Instance 不存在  

Forbidden.DiskNotFound    The specified Disk is not found, so we cann’t get enough information to check permission in RAM.    404    使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Disk 不存在  

Forbidden.SecurityGroupNotFound    The specified SecurityGroup is not found, so we cann’t get enough information to check permission in RAM.    404    使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 SecurityGroup 不存在  

Forbidden.SnapshotNotFound    The specified Snapshot is not found, so we cann’t get enough information to check permission in RAM.    404    使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Snapshot 不存在  

Forbidden.ImageNotFound    The specified Image is not found, so we cann’t get enough information to check permission in RAM.    404    使用了 RAM 授权子账号进行资源访问,但是本次访问涉及到的 Image 不存在  

Forbidden.RAM    User not authorized to operate the specified resource, or this API doesn’t support RAM.    403    使用了 RAM 授权子账号进行资源访问,但是本次操作没有被正确的授权  

Forbidden.NotSupportRAM    This action does not support accessed by RAM mode.    403    该接口不允许使用 RAM 方式进行访问  

InsufficientBalance    Your account does not have enough balance.    400    余额不足  

IdempotentParameterMismatch    Request uses a client token in a previous request but is not identical to that request.    400    使用了一个已经使用过的 ClientToken,但此次请求内容却又与上一次使用该 Token 的 request 不一样.  

RealNameAuthenticationError    Your account has not passed the real-name authentication yet.    403    用户未进行实名认证  

InvalidIdempotenceParameter.Mismatch    The specified parameters are different from before    403    幂等参数不匹配  

LastTokenProcessing    The last token request is processing    403    上一次请求还在处理中  

InvalidParameter    The specified parameter is not valid    400    参数校验失败  

阿里云把http改造成https的方法

这个不是修改的,是进行安全部署,https使用证书进行访问,有加密的更安全。

你需要先申请一个域名的https证书,在阿里云,腾讯云上面都有免费的域名https证书申请。

检查网站是否支持https,可以说99/100的网站都支持https,内容和界面都和http的是一样的,但是如果你的网站有外部http链接的话,这个网站使用https的话就无法打开http链接。

在iis,apache,nginx等网站服务上面部署证书,开放https端口(默认443端口),既可访问https地址,也可以访问http地址。


本文标题:阿里云http服务器请求格式的简单介绍
转载来于:http://azwzsj.com/article/ddesjoo.html