Php AWS-Cloudfront-如何使用原始自定义标题

Php AWS-Cloudfront-如何使用原始自定义标题,php,amazon-web-services,http-headers,amazon-cloudfront,Php,Amazon Web Services,Http Headers,Amazon Cloudfront,我是AWS的新手,现在正在参加一些不同的培训课程,我偶然发现了一件有趣的事情,那就是能够在Cloudfront中添加自定义标题。也就是说,我似乎无法理解(或找到易于理解的文档)如何使用/利用此功能提供的功能 有人能告诉我如何: 如何访问我设置的标题?例如,我使用了终端 运行一些基本的cURL命令来查看MyCloudFront的标题 参考资料和我假设自定义标题会在那里,但在那里 不是 我发现这些自定义头被发送到源代码 但我不知道如何使用这些标题来改进 应用程序/资产逻辑 如果有关系的话,我正在用P

我是AWS的新手,现在正在参加一些不同的培训课程,我偶然发现了一件有趣的事情,那就是能够在Cloudfront中添加自定义标题。也就是说,我似乎无法理解(或找到易于理解的文档)如何使用/利用此功能提供的功能

有人能告诉我如何:

  • 如何访问我设置的标题?例如,我使用了终端 运行一些基本的cURL命令来查看MyCloudFront的标题 参考资料和我假设自定义标题会在那里,但在那里 不是
  • 我发现这些自定义头被发送到源代码 但我不知道如何使用这些标题来改进 应用程序/资产逻辑
  • 如果有关系的话,我正在用PHP编程。如有任何解释、代码示例或参考有用文档,将不胜感激。谢谢你的帮助

    如何访问我设置的标题

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

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

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

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

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

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

    但是如果你不知道如何处理它们,你可能就不需要它们了

    一些潜在的应用:

    • 如果要使用签名的CloudFront URL或签名的Cookie,可以添加一个带有秘密值的头,该值向web服务器证明请求来自CloudFront,特别是来自CloudFront发行版,因为该值匹配。以前,您的源服务器必须公开访问,因为无法验证请求是否通过CloudFront到达(并由CloudFront授权)——任何人都可以伪造标准头,即使您检查了传入请求的IP地址,您也可以证明它是“某个”CloudFront发行版,但不是你的CloudFront发行版。(如果您实施了类似的天真信任场景,恶意用户可能会设置CloudFront发行版并访问您的内容)。由于浏览器不知道/看不到标头及其值,因此可以使用代码中读取任何其他传入请求标头所用的相同机制来验证标头是否具有预期值。如果您想拒绝出于其他原因(除了安全内容的身份验证和访问控制)而未通过CloudFront到达的请求,也可以使用此选项。看

    • 您可以使用它们在前往原点的途中修改CORS标题。看

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

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


    哇,感谢您提供如此详细且更重要的有用解释。我真的很欣赏这种洞察力。