

# HTTP 403 状态代码（权限被拒绝）
<a name="http-403-permission-denied"></a>

HTTP 403 错误意味着客户端无权访问所请求的资源。客户端理解了请求，但无法向查看器授予访问权限。以下是 CloudFront 返回此状态代码的常见原因：

**Topics**
+ [备用 CNAME 配置不正确](#alternate-cname-incorrectly-configured)
+ [在 CloudFront 分配或源上配置 AWS WAF](#aws-waf-configured-on-distribution-origin)
+ [自定义源返回 403 错误](#custom-origin-returning-403)
+ [Amazon S3 源返回 403 错误](#s3-origin-403-error)
+ [地理限制返回 403 错误](#geolocation-403)
+ [签名 URL 或签名 Cookie 配置返回 403 错误](#signed-URLs-cookies-403)
+ [堆叠分配导致 403 错误](#stacked-distributions-403)

## 备用 CNAME 配置不正确
<a name="alternate-cname-incorrectly-configured"></a>

确认您为分配指定了正确的 CNAME。要使用备用 CNAME 代替默认 CloudFront URL，请执行以下操作：

1. 在您的 DNS 中创建一条 CNAME 记录，将 CNAME 指向 CloudFront 分配 URL。

1. 在 CloudFront 分配配置中添加该 CNAME。

如果您创建了 DNS 记录但未在 CloudFront 分配配置中添加 CNAME，则该请求将返回 403 错误。有关配置自定义 CNAME 的更多信息，请参阅[通过添加备用域名（CNAME）使用自定义 URL](CNAMEs.md)。

## 在 CloudFront 分配或源上配置 AWS WAF
<a name="aws-waf-configured-on-distribution-origin"></a>

当 AWS WAF 位于客户端和 CloudFront 之间时，CloudFront 无法区分 403 错误代码是由源返回的，还是当请求被阻止时由 AWS WAF 返回的。

要查找 403 状态代码的来源，请检查 AWS WAF Web 访问控制列表（ACL）规则中是否有被阻止的请求。有关更多信息，请参阅以下主题：
+ [AWS WAF web access control lists (web ACLs)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html)
+ [Testing and tuning your AWS WAF protections](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html)

## 自定义源返回 403 错误
<a name="custom-origin-returning-403"></a>

如果您使用的是自定义源，则当源中有自定义防火墙配置时，您可能会看到 403 错误。要排除故障，请直接向源发出请求。如果您可以在没有 CloudFront 的情况下重现此错误，则表示是源导致了 403 错误。

如果是自定义源导致了错误，请检查源日志来确定可能导致错误的原因。有关更多信息，请参阅以下故障排除主题：
+ [如何排查 API Gateway 中的 HTTP 403 错误？](https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-troubleshoot-403-forbidden/ )
+ [如何排查应用程序负载均衡器 HTTP 403 禁止错误？](https://repost.aws/knowledge-center/alb-http-403-error)

## Amazon S3 源返回 403 错误
<a name="s3-origin-403-error"></a>

您可能会由于以下原因看到 403 错误。
+ CloudFront 无权访问 Amazon S3 存储桶。如果未为分配启用来源访问身份（OAI）或源访问控制（OAC）且存储桶为私有的，则可能发生此情况。
+ 所请求 URL 中的指定路径不正确。
+ 所请求的对象不存在。
+ 主机标头是通过 REST API 端点转发的。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的 [HTTP Host 标头存储桶规范](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#VirtualHostingSpecifyBucket)。
+ 您配置了自定义错误页面。有关更多信息，请参阅 [当您已配置自定义错误页面时 CloudFront​ 如何处理错误](HTTPStatusCodes.md#HTTPStatusCodes-custom-error-pages)。

## 地理限制返回 403 错误
<a name="geolocation-403"></a>

如果您启动了地理限制（也称为地理阻止）来禁止特定地理位置的用户访问您通过 CloudFront 分配所分配的内容，受阻止的用户会收到 403 错误。

有关更多信息，请参阅 [限制您的内容的地理分配](georestrictions.md)。

## 签名 URL 或签名 Cookie 配置返回 403 错误
<a name="signed-URLs-cookies-403"></a>

如果您为分配的行为配置启用了**限制查看器访问**，则不使用签名 Cookie 或签名 URL 的请求将导致 403 错误。有关更多信息，请参阅以下主题：
+ [使用签名 URL 和签名 Cookie 提供私有内容](PrivateContent.md)
+ [我该如何解决与 CloudFront 中的签名 URL 或签名 Cookie 相关的问题？](https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-troubleshoot-signed-url-cookies/)

## 堆叠分配导致 403 错误
<a name="stacked-distributions-403"></a>

如果您在对源端点的请求链中具有两个或更多分配，CloudFront 将返回 403 错误。我们建议不要将一个分配放在另一个分配之前。