本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
向发出 HTTPS 请求Amazon WAF或 Shield Advanced
Amazon WAF和 Shield Advanced 请求是 HTTPS 请求,如RFC 2616
请求 URI
请求 URI 始终是一个正斜杠 /
。
HTTP 标头
Amazon WAF和 Shield Advanced 要求在 HTTP 请求标头中包含以下信息:
- Host (必需)
指定资源创建位置的终端节点。有关终端节点的信息,请参阅Amazon服务终端节点。例如,
Host
标头Amazon WAF是针对 CloudFront 分配的waf.amazonaws.com:443
。- x-amz-date 或 Date(必需)
用于创建
Authorization
标头中包含的签名的日期。采用 ISO 8601 标准格式以 UTC 时间指定日期,如以下示例所示:x-amz-date: 20151007T174952Z
必须包含
x-amz-date
或Date
。(有些 HTTP 客户端库不允许设置Date
标头。) 当存在x-amz-date
标头时,Amazon WAF 在验证请求身份时会忽略所有Date
标头。当接收请求时,时间戳必须在 Amazon 系统时间的 15 分钟内。如果不在此时间范围内,请求将失败,并出现
RequestExpired
错误代码,以防止其他人重放您的请求。- Authorization (必需)
请求身份验证所需的信息。有关构建此标头的更多信息,请参阅对请求进行身份验证。
- X-Amz-Target (必需)
AWSWAF_
或AWSShield_
、无标点的 API 版本、句点 (.
) 以及操作名称的联接,例如:AWSWAF_20150824.CreateWebACL
- Content-Type (条件性)
指定内容类型为 JSON,并指定 JSON 的版本,如以下示例所示:
Content-Type: application/x-amz-json-1.1
条件:对 POST 请求是必需的。
- Content-Length (条件性)
符合 RFC 2616 的消息的长度(不带标头)。
条件:如果请求正文本身包含信息(大多数工具包自动添加此标题),则必需。
以下示例为在 Amazon WAF 中创建 Web ACL 所用的 HTTP 请求的标头:
POST / HTTP/1.1 Host: waf.amazonaws.com:443 X-Amz-Date: 20151007T174952Z Authorization: AWS4-HMAC-SHA256 Credential=AccessKeyID/20151007/us-east-2/waf/aws4_request, SignedHeaders=host;x-amz-date;x-amz-target, Signature=145b1567ab3c50d929412f28f52c45dbf1e63ec5c66023d232a539a4afd11fd9 X-Amz-Target: AWSWAF_20150824.CreateWebACL Accept: */* Content-Type: application/x-amz-json-1.1; charset=UTF-8 Content-Length: 231 Connection: Keep-Alive
HTTP 请求正文
多个Amazon WAF和 Shield Advanced API 操作要求您在请求正文中包含 JSON 格式的数据。
以下示例请求使用一个简单的 JSON 语句来更新 IPSet
(在控制台中称为 IP 匹配条件),以包含 IP 地址 192.0.2.44 (用 CIDR 表示法记为 192.0.2.44/32):
POST / HTTP/1.1 Host: waf.amazonaws.com:443 X-Amz-Date: 20151007T174952Z Authorization: AWS4-HMAC-SHA256 Credential=AccessKeyID/20151007/us-east-2/waf/aws4_request, SignedHeaders=host;x-amz-date;x-amz-target, Signature=145b1567ab3c50d929412f28f52c45dbf1e63ec5c66023d232a539a4afd11fd9 X-Amz-Target: AWSWAF_20150824.UpdateIPSet Accept: */* Content-Type: application/x-amz-json-1.1; charset=UTF-8 Content-Length: 283 Connection: Keep-Alive { "ChangeToken": "d4c4f53b-9c7e-47ce-9140-0ee5ffffffff", "IPSetId": "69d4d072-170c-463d-ab82-0643ffffffff", "Updates": [ { "Action": "INSERT", "IPSetDescriptor": { "Type": "IPV4", "Value": "192.0.2.44/32" } } ] }