CloudFront添加S3源报错:Header不能同时为自定义源标头和转发标头
问题根源分析:CloudFront报错 "Header is not allowed as both an origin custom header and a forward header"
这个报错的核心是同一个HTTP标头被同时配置了两种冲突规则:
- 该标头被设置为源自定义标头:CloudFront向你的服务源发送请求时,会主动添加这个自定义头用于验证请求合法性;
- 该标头又被设置为转发标头:CloudFront会把客户端发来的这个标头原样转发给源(可能是全局配置,或是新添加的S3源对应缓存行为里开启了该标头的转发)。
CloudFront不允许这种重叠配置,因为这会导致逻辑冲突:当请求匹配到对应缓存行为时,CloudFront无法判断应该使用你预设的自定义头值,还是转发客户端发来的头值。
结合你的场景,具体排查方向:
- 检查现有分发的所有缓存行为,看是否在「转发标头」设置里包含了那个用于验证的自定义头(比如你给服务源配置的
X-XXX-Verify类头)。如果是全局开启了转发所有头,或是不小心勾选了这个自定义头,就会触发冲突。 - 检查新添加的S3源对应的缓存行为,是否开启了转发某个标头,而这个标头恰好和服务源的自定义头重名。
解决思路:
- 如果S3源不需要转发那个验证用的自定义头,直接在对应缓存行为的转发标头设置里去掉这个标头即可;
- 如果确实需要转发某个同名标头,修改服务源的自定义头名称,避免和转发标头重名。
内容的提问来源于stack exchange,提问作者Avraam Mavridis
相关产品推荐
相关产品推荐

