AWS - Cloudfront - 如何使用 Origin 自定义标头

2024-01-06

我对 AWS 还很陌生,现在正在参加一些不同的培训课程,我偶然发现的有趣的事情之一是能够在 Cloudfront 中添加自定义标头。也就是说,我似乎无法弄清楚(或找到简单易懂的文档)如何使用/利用此功能提供的功能。

有人可以告诉我如何:

  1. 如何访问我设置的标题?例如我使用终端 运行一些基本的 cURL 命令来查看我的 Cloudfront 的标头 资源,我假设自定义标头会在那里,但在那里 不是。
  2. 我知道这些自定义标头被发送到 Origin 源 但我对如何使用这些标头来改进感到困惑 应用程序/资产逻辑。

如果重要的话我会用 PHP 编程。任何解释、代码示例或有用文档的引用将不胜感激。谢谢您的帮助。


如何访问我设置的标题?

“你”浏览器/curl 用户看不到它们。它们在 CloudFront 和源服务器之间是私有的,随请求一起发送。

您可以从服务器 PHP 代码访问它们getallheaders() http://php.net/manual/en/function.getallheaders.php.

我对如何使用这些标头感到困惑

它们允许您做以下两件事之一:

  • 如果请求中出现匹配的标头,并且它将被发送到源,但您不希望将其发送到收到的原始值,请用新值覆盖它

  • 如果请求中没有匹配的标头,请在发送到源服务器之前添加它。

但如果您不知道如何处理它们,您可能就不需要它们。

一些潜在的应用:

  • 如果您想使用签名的 CloudFront URL 或签名的 cookie,您可以添加一个带有秘密值的标头,该标头向您的 Web 服务器证明请求来自 CloudFront,特别是来自yourCloudFront 分配,因为值匹配。以前,您的源服务器必须可公开访问,因为无法验证请求是否通过 CloudFront 到达(并经过 CloudFront 授权)——任何人都可以伪造标准标头,即使您检查了传入的 IP 地址请求,您可以证明它是“某些”CloudFront 发行版,但不是yourCloudFront 分发。 (如果您实施了类似的简单信任方案,恶意用户可能会设置 CloudFront 发行版并访问您的内容)。由于浏览器不知道/看不到标头及其值,因此您可以使用代码中用于读取任何其他传入请求标头的相同机制来验证标头是否具有预期值。如果您想要拒绝因安全内容的身份验证和访问控制之外的其他原因而未通过 CloudFront 到达的请求,也可以使用此方法。看http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/forward-custom-headers.html#forward-custom-headers-restrict-access http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/forward-custom-headers.html#forward-custom-headers-restrict-access.

  • 您可以使用它们在到达原点的途中修改 CORS 标头。看http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-cors http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web-cors

  • 如果您有多个 CloudFront 发行版指向同一源服务器,您可以使用它们来跟踪请求通过多个 CloudFront 发行版中的哪一个到达,以用于计费目的。

  • 您可以使用它们来弥补源服务器中的某种限制,无论出于何种原因,它都需要查看某个标头,但您不想实际转发此标头,因为这会损害您的缓存命中率-- CloudFront 缓存针对entire发送到源的请求,包括路径、转发标头(如果启用)、查询字符串(如果启用)和/或 cookie(如果启用)。仅当转发到源的请求与它发送的请求完全匹配时,它才会提供来自缓存的请求,以便接收它缓存的响应(因此 CloudFront 可以根据请求参数缓存同一资源的多个变体)您允许通过的转发)。原因是缓存有义务不假设服务器如何根据不同的请求参数改变响应。除非两个请求在语义上等效,否则不能将它们视为等效的缓存目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS - Cloudfront - 如何使用 Origin 自定义标头 的相关文章