

**推出 的新主控台體驗 AWS WAF**

您現在可以使用更新後的體驗，在主控台的任何位置存取 AWS WAF 功能。如需詳細資訊，請參閱[使用 主控台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 傳送Block動作的自訂回應
<a name="customizing-the-response-for-blocked-requests"></a>

本節說明如何指示 AWS WAF 將自訂 HTTP 回應傳回用戶端，以取得設定為 的規則動作或保護套件 (Web ACL) 預設動作Block。如需規則動作的詳細資訊，請參閱 [在 中使用規則動作 AWS WAF](waf-rule-action.md)。如需預設保護套件 (Web ACL) 動作的詳細資訊，請參閱 [在 中設定保護套件 (Web ACL) 預設動作 AWS WAF](web-acl-default-action.md)。

當您定義Block動作的自訂回應處理時，您可以定義狀態碼、標頭和回應內文。如需可與 搭配使用的狀態碼清單 AWS WAF，請參閱以下章節：[自訂回應支援的狀態碼](customizing-the-response-status-codes.md)。

**使用案例**  
自訂回應的使用案例包括下列項目：
+ 將非預設狀態碼傳回用戶端。
+ 將自訂回應標頭傳回用戶端。您可以指定 以外的任何標頭名稱`content-type`。
+ 傳送靜態錯誤頁面回用戶端。
+ 將用戶端重新導向至不同的 URL。若要這樣做，您可以指定其中一個`3xx`重新導向狀態代碼，例如 `301 (Moved Permanently)`或 `302 (Found)`，然後使用新的 URL 指定名為 `Location` 的新標頭。

**與您在受保護資源中定義的回應互動**  
您為 AWS WAF Block動作指定的自訂回應優先於您在受保護資源中定義的任何回應規格。

您使用 保護之 AWS 資源的主機服務 AWS WAF 可能會允許 Web 請求的自訂回應處理。範例如下：
+ 使用 Amazon CloudFront，您可以根據狀態碼自訂錯誤頁面。如需詳細資訊，請參閱《*Amazon CloudFront 開發人員指南*》中的[產生自訂錯誤回應](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GeneratingCustomErrorResponses.html)。
+ 透過 Amazon API Gateway，您可以定義閘道的回應和狀態碼。如需詳細資訊，請參閱《*Amazon API Gateway * [API Gateway 開發人員指南》中的 API Gateway 中的閘道回應](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-gatewayResponse-definition.html)。

您無法在受保護 AWS 的資源中結合 AWS WAF 自訂回應設定與自訂回應設定。任何個別 Web 請求的回應規格完全 AWS WAF 來自或完全來自受保護的資源。

對於 AWS WAF 封鎖的 Web 請求，以下顯示優先順序。

1. **AWS WAF 自訂回應** – 如果 AWS WAF Block動作已啟用自訂回應，受保護的資源會將設定的自訂回應傳回給用戶端。您可能已在受保護資源本身中定義的任何回應設定都無效。

1. **受保護的資源中定義的自訂回應** – 否則，如果受保護的資源已指定自訂回應設定，則受保護的資源會使用這些設定來回應用戶端。

1. **AWS WAF 預設Block回應** – 否則，受保護的資源會以 AWS WAF 預設回應 回應用戶端Block`403 (Forbidden)`。

對於 AWS WAF 允許 的 Web 請求，受保護資源的組態會決定其傳回用戶端的回應。您無法 AWS WAF 在 中為允許的請求設定回應設定。您可以在 中 AWS WAF 為允許的請求設定的唯一自訂項目是將自訂標頭插入原始請求，然後再將請求轉送至受保護的資源。此選項會在上一節 中說明[插入非封鎖動作的自訂請求標頭](customizing-the-incoming-request.md)。

**自訂回應標頭**  
您可以指定 以外的任何標頭名稱`content-type`。

**自訂回應內文**  
您可以在要使用的保護套件 (Web ACL) 或規則群組內容中定義自訂回應的內文。定義自訂回應內文之後，您可以在建立自訂回應內文的保護套件 (Web ACL) 或規則群組中的任意位置參考。在個別Block動作設定中，您會參考要使用的自訂內文，並定義自訂回應的狀態碼和標頭。

當您在主控台中建立自訂回應時，您可以從已定義的回應內文中進行選擇，也可以建立新的內文。在主控台外部，您可以在保護套件 (Web ACL) 或規則群組層級定義自訂回應主體，然後從保護套件 (Web ACL) 或規則群組內的動作設定中參考它們。這會顯示在下一節的範例 JSON 中。

**自訂回應範例**  
下列範例列出具有自訂回應設定的規則群組的 JSON。自訂回應內文是為整個規則群組定義，然後在規則動作中由索引鍵參考。

```
{
 "ARN": "test_rulegroup_arn",
 "Capacity": 1,
 
 "CustomResponseBodies": {
  "CustomResponseBodyKey1": {
   "Content": "This is a plain text response body.",
   "ContentType": "TEXT_PLAIN"
  }
 },
 
 "Description": "This is a test rule group.",
 "Id": "test_rulegroup_id",
 "Name": "TestRuleGroup",
 
 "Rules": [
  {
   "Action": {
    "Block": {
     "CustomResponse": {
      "CustomResponseBodyKey": "CustomResponseBodyKey1",
      "ResponseCode": 404,
      "ResponseHeaders": [
       {
        "Name": "BlockActionHeader1Name",
        "Value": "BlockActionHeader1Value"
       }
      ]
     }
    }
   },
   "Name": "GeoMatchRule",
   "Priority": 1,
   "Statement": {
    "GeoMatchStatement": {
     "CountryCodes": [
      "US"
     ]
    }
   },
   "VisibilityConfig": {
    "CloudWatchMetricsEnabled": true,
    "MetricName": "TestRuleGroupReferenceMetric",
    "SampledRequestsEnabled": true
   }
  }
 ],
 "VisibilityConfig": {
  "CloudWatchMetricsEnabled": true,
  "MetricName": "TestRuleGroupMetric",
  "SampledRequestsEnabled": true
 }
}
```