繁体   English   中英

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

[英]AWS - Cloudfront - How To Use Origin Custom Headers

我刚接触AWS,现在正在接受一些不同的培训课程,而我偶然发现的有趣的事情之一就是能够在Cloudfront中添加自定义标题。 就是说,我似乎无法弄清楚(或找到易于理解的文档)如何使用/利用此功能提供的功能。

有人可以让我知道如何:

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

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

如何访问我设置的标题?

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

您可以使用getallheaders()从服务器PHP代码访问它们。

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

他们允许您做的是以下两件事之一:

  • 如果请求中出现匹配的标头,并且该标头将被发送到原始地址,但是您不希望将其发送给原样,则用新值覆盖

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

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

一些潜在的应用程序:

  • 如果你想使用签名的CloudFront的网址或签署饼干,你可以添加页眉与证明您的Web服务器秘密值请求从CloudFront的来了,特别 CloudFront的分发,因为值相匹配。 以前,您的原始服务器必须是可公开访问的,因为无法验证请求是否通过CloudFront到达(并由其授权)-即使任何人检查了传入的IP地址,标准头都可以伪造。请求,您可以证明它是“某些” CloudFront发行版,而不是您的 CloudFront发行版。 (如果您实施了这样的幼稚信任方案,则恶意用户可以设置CloudFront发行版并访问您的内容)。 由于浏览器未知/看不到标头及其值,因此您可以使用代码中用于读取其他传入请求标头的相同机制,验证标头是否存在期望值。 如果您要拒绝由于其他原因(对于安全内容的身份验证和访问控制)未通过CloudFront到达的请求,也可以使用此方法。 请参阅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

  • 如果您有多个指向同一原始服务器的CloudFront发行版,则可以使用它们来跟踪请求到达的多个CloudFront分配中的哪个。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM