有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

1. 接口描述

接口请求域名: waf.tencentcloudapi.com 。

添加SaaS型WAF防护域名

默认接口请求频率限制:20次/秒。

推荐使用 API Explorer
点击调试
API Explorer 提供了在线调用、签名验证、SDK 代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成 SDK 调用示例。

2. 输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数

参数名称 必选 类型 描述
Action String 公共参数,本接口取值:AddSpartaProtection。
Version String 公共参数,本接口取值:2018-01-25。
Region String 公共参数,详见产品支持的 地域列表,本接口仅支持其中的: ap-guangzhou, ap-seoul 。
Domain String 需要防护的域名
示例值:test.qcloud.com
CertType Integer 证书类型。
0:仅配置HTTP监听端口,没有证书
1:证书来源为自有证书
2:证书来源为托管证书
示例值:0
IsCdn Integer waf前是否部署有七层代理服务。
0:没有部署代理服务
1:有部署代理服务,waf将使用XFF获取客户端IP
2:有部署代理服务,waf将使用remote_addr获取客户端IP
3:有部署代理服务,waf将使用ip_headers中的自定义header获取客户端IP
示例值:0
UpstreamType Integer 回源类型。
0:通过IP回源
1:通过域名回源
示例值:0
IsWebsocket Integer 是否开启WebSocket支持。
0:关闭
1:开启
示例值:0
LoadBalance String 回源负载均衡策略。
0:轮询
1:IP hash
2:加权轮询
示例值:0
Ports.N Array of PortItem 服务端口列表配置。
NginxServerId:新增域名时填'0'
Port:监听端口号
Protocol:端口协议
UpstreamPort:与Port相同
UpstreamProtocol:与Protocol相同
IsKeepAlive String 必填项,是否开启长连接。
0: 短连接
1: 长连接
示例值:1
InstanceID String 必填项,域名所属实例id
示例值:waf_2kl62zgs0108e8j3
Cert String CertType为1时,需要填充此参数,表示自有证书的证书链
示例值:-----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE-----
PrivateKey String CertType为1时,需要填充此参数,表示自有证书的私钥
示例值:-----BEGIN RSA PRIVATE KEY----- xxx -----END RSA PRIVATE KEY-----
SSLId String CertType为2时,需要填充此参数,表示腾讯云SSL平台托管的证书id
示例值:cKnKQLJ
ResourceId String 待废弃,可不填。Waf的资源ID。
示例值:waf_2kl62zgs0108e8j3
IpHeaders.N Array of String IsCdn为3时,需要填此参数,表示自定义header
示例值:["x-real-ip"]
UpstreamScheme String 服务配置有HTTPS端口时,HTTPS的回源协议。
http:使用http协议回源,和HttpsUpstreamPort配合使用
https:使用https协议回源
示例值:https
HttpsUpstreamPort String HTTPS回源端口,仅UpstreamScheme为http时需要填当前字段
示例值:80
IsGray Integer 待废弃,可不填。是否开启灰度,0表示不开启灰度。
示例值:0
GrayAreas.N Array of String 待废弃,可不填。灰度的地区
示例值:["gz","bj"]
HttpsRewrite Integer 必填项,是否开启HTTP强制跳转到HTTPS。
0:不强制跳转
1:开启强制跳转
示例值:1
UpstreamDomain String 域名回源时的回源域名。UpstreamType为1时,需要填充此字段
示例值:www.qq.com
SrcList.N Array of String IP回源时的回源IP列表。UpstreamType为0时,需要填充此字段
示例值:["1.1.1.1","8.8.8.8"]
IsHttp2 Integer 必填项,是否开启HTTP2,需要开启HTTPS协议支持。
0:关闭
1:开启
示例值:0
Edition String 待废弃,可不填。WAF实例类型。
sparta-waf:SAAS型WAF
clb-waf:负载均衡型WAF
cdn-waf:CDN上的Web防护能力
示例值:clb-waf
Anycast Integer 待废弃,目前填0即可。anycast IP类型开关: 0 普通IP 1 Anycast IP
示例值:0
Weights.N Array of Integer 回源IP列表各IP的权重,和SrcList一一对应。当且仅当UpstreamType为0,并且SrcList有多个IP,并且LoadBalance为2时需要填写,否则填 []
示例值:[10,10,10]
ActiveCheck Integer 必填项,是否开启主动健康检测。
0:不开启
1:开启
示例值:1
TLSVersion Integer TLS版本信息
示例值:1
CipherTemplate Integer 必填项,加密套件模板。
0:不支持选择,使用默认模板
1:通用型模板
2:安全型模板
3:自定义模板
示例值:0
Ciphers.N Array of Integer 自定义的加密套件列表。CipherTemplate为3时需要填此字段,表示自定义的加密套件,值通过DescribeCiphersDetail接口获取。
示例值:[1,2,15]
ProxyReadTimeout Integer WAF与源站的读超时时间,默认300s。
示例值:300
ProxySendTimeout Integer WAF与源站的写超时时间,默认300s。
示例值:300
SniType Integer WAF回源时的SNI类型。
0:关闭SNI,不配置client_hello中的server_name
1:开启SNI,client_hello中的server_name为防护域名
2:开启SNI,SNI为域名回源时的源站域名
3:开启SNI,SNI为自定义域名
示例值:2
SniHost String SniType为3时,需要填此参数,表示自定义的SNI;
示例值:test.com
XFFReset Integer 是否开启XFF重置。
0:关闭
1:开启
示例值:0
Note String 域名备注信息
示例值:域名备注
UpstreamHost String 自定义回源Host。默认为空字符串,表示使用防护域名作为回源Host。
示例值:www.qq.com
ProxyBuffer Integer 是否开启缓存 0-关闭 1-开启
示例值:0

3. 输出参数

参数名称 类型 描述
RequestId String 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。

4. 示例

示例1 添加域名

添加域名

输入示例

POST / HTTP/1.1
Host: waf.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddSpartaProtection
<公共请求参数>

{
    "UpstreamScheme": "http",
    "IsGray": "1",
    "Domain": "lucas0621.qcloudwaf.com",
    "LoadBalance": "1",
    "HttpsUpstreamPort": "80",
    "InstanceID": "lucas",
    "UpstreamType": "1",
    "UpstreamDomain": "lucas0622.qcloudwaf.com",
    "IsWebsocket": "1",
    "IsHttp2": "1",
    "Edition": "sass",
    "CertType": "0",
    "Weights": [
        "1"
    ],
    "IsKeepAlive": "1",
    "ActiveCheck": "1",
    "IsCdn": "1",
    "TLSVersion": "1",
    "Anycast": "1",
    "Ports": [
        {
            "NginxServerId": "0",
            "Protocol": "http",
            "Port": "80",
            "UpstreamPort": "80",
            "UpstreamProtocol": "http"
        }
    ],
    "HttpsRewrite": "1"
}

输出示例

{
    "Response": {
        "RequestId": "87c8499e-3748-4bb0-9740-b2683a003975"
    }
}

示例2 添加域名-1

添加域名-1

输入示例

POST / HTTP/1.1
Host: waf.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddSpartaProtection
<公共请求参数>

{
    "UpstreamScheme": "http",
    "IsGray": "1",
    "Domain": "lucas0919.qcloudwaf.com",
    "LoadBalance": "1",
    "HttpsUpstreamPort": "80",
    "InstanceID": "lucas",
    "UpstreamType": "1",
    "UpstreamDomain": "lucas0622.qcloudwaf.com",
    "IsWebsocket": "1",
    "IsHttp2": "1",
    "Edition": "saas",
    "CertType": "0",
    "Weights": [
        "1"
    ],
    "IsKeepAlive": "1",
    "ActiveCheck": "1",
    "IsCdn": "1",
    "TLSVersion": "3",
    "Ports": [
        {
            "NginxServerId": "0",
            "Protocol": "http",
            "Port": "80",
            "UpstreamPort": "80",
            "UpstreamProtocol": "http"
        }
    ],
    "HttpsRewrite": "1"
}

输出示例

{
    "Response": {
        "RequestId": "a5e5757a-2b04-4d56-a049-54eb8f053e75"
    }
}

示例3 重复添加的场景

重复添加的场景

输入示例

POST / HTTP/1.1
Host: waf.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddSpartaProtection
<公共请求参数>

{
    "Domain": "test.qcloud.com",
    "LoadBalance": "0",
    "Edition": "clb-waf",
    "UpstreamType": "0",
    "CertType": "0",
    "InstanceID": "waf-9dasfds6gsd",
    "IsKeepAlive": "1",
    "Ports": [
        {
            "NginxServerId": "0",
            "Protocol": "http",
            "Port": "80",
            "UpstreamPort": "80",
            "UpstreamProtocol": "http"
        }
    ],
    "SrcList": [
        "1.1.1.1"
    ],
    "IsCdn": "0",
    "IsWebsocket": "0",
    "IsGray": "0",
    "IsHttp2": "0"
}

输出示例

{
    "Response": {
        "Error": {
            "Code": "InternalError",
            "Message": "域名已经存在,请勿重复添加"
        },
        "RequestId": "4f284280-a493-4932-95f4-3d87e7320b3e"
    }
}

示例4 添加SAAS-WAF防护域名

添加SAAS-WAF防护域名

输入示例

POST / HTTP/1.1
Host: waf.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: AddSpartaProtection
<公共请求参数>

{
    "Domain": "test1.qcloud.com",
    "LoadBalance": "0",
    "Edition": "clb-waf",
    "UpstreamType": "0",
    "CertType": "0",
    "InstanceID": "waf-7dasgds2nfsafg",
    "IsKeepAlive": "1",
    "Ports": [
        {
            "NginxServerId": "0",
            "Protocol": "http",
            "Port": "80",
            "UpstreamPort": "80",
            "UpstreamProtocol": "http"
        }
    ],
    "SrcList": [
        "1.1.1.1"
    ],
    "IsCdn": "0",
    "IsWebsocket": "0",
    "IsGray": "0",
    "IsHttp2": "0"
}

输出示例

{
    "Response": {
        "RequestId": "9ee8be5b-6caa-4c39-ab70-890e0e673515"
    }
}

5. 开发者资源

腾讯云 API 平台

腾讯云 API 平台 是综合 API 文档、错误码、API Explorer 及 SDK 等资源的统一查询平台,方便您从同一入口查询及使用腾讯云提供的所有 API 服务。

API Inspector

用户可通过 API Inspector 查看控制台每一步操作关联的 API 调用情况,并自动生成各语言版本的 API 代码,也可前往 API Explorer 进行在线调试。

SDK

云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言,能更方便的调用 API。

命令行工具

6. 错误码

以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码

错误码 描述
FailedOperation 操作失败。
FailedOperation.RedisOperationFailed 操作Redis数据库失败
InternalError 内部错误。
InternalError.AsynchronousCallFailed 异步调用失败
InvalidParameter 参数错误。
InvalidParameter.CertificationParameterErr 证书信息参数错误
InvalidParameter.DomainExceedsLimitErr 域名数量超出限制错误
InvalidParameter.DomainNotRecord 域名未备案
InvalidParameter.PortParameterErr 端口信息参数错误
InvalidParameter.ProtectionDomainParameterErr 防护域名参数错误
InvalidParameter.TLSParameterErr TLS或加密套件参数错误
InvalidParameter.UnauthorizedOperationParameterErr 越权参数错误
InvalidParameter.UpstreamParameterErr 回源信息参数错误
InvalidParameter.XFFResetParameterErr XFF重置参数错误
InvalidParameterValue 参数取值错误。
LimitExceeded 超过配额限制。
MissingParameter 缺少参数错误。
ResourceInUse 资源被占用。
ResourceInUse.EmptyErr EmptyErr
ResourceInsufficient 资源不足。
ResourceNotFound 资源不存在。
ResourceUnavailable 资源不可用。
ResourcesSoldOut 资源售罄。
UnauthorizedOperation 未授权操作。
UnknownParameter 未知参数错误。