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 自定义标头 的相关文章

  • SetInterval 函数不适用于 PHP 文件

    我有这样的index html
  • CakePHP Auth 组件使用 $this->Auth->login() 时未登录;

    我是 cakePHP 的新手 我已经阅读了他们的文档 并且正在遵循他们的简单身份验证示例 我还广泛搜索 包括本网站上的答案 来寻找我的问题的答案 我正在使用 cakePHP 2 0 我的 UsersController 的登录功能如下所示
  • 将 EC2 实例注册到 ECS 集群,无需公网 IP

    我很难将在我的 VPC 和私有子网上 没有附加互联网网关 创建的实例添加到 ECS 集群 目前 我设法做到这一点的唯一方法是添加公共 IP 并配置 NAT 实例 网关 如何使用具有私有子网的 ECS 集群 我想我已经在 AWS 文档中找到了
  • DataTables 第 2 页的分页未调用放大弹出窗口

    所以我有这个启用分页的数据表 我编码了一种方式 以便用户可以编辑表的行 当用户调用它在放大弹出窗口中打开的编辑页面时 它在第 1 页 从第 2 页起都运行良好 DataTable 及其前面停止调用 Magnific Popup 我只是不明白
  • Symfony 生成器形式、原则和 M:N 关系

    我有一个基本的 M N 设置 包含三个表 candidate position 和 Candidate position 这是 MySQL Workbench 的 ERD 屏幕截图 现在 我们继续讨论表单 在 symfony 生成器的默认世
  • PHP 电子邮件验证[重复]

    这个问题在这里已经有答案了 For PHP最好的电子邮件验证方法是什么preg NOT ereg因为它是已弃用 删除 I don t需要检查该网站是否存在 这不像最高安全性 我找到了很多方法ereg但它们 显然 不是好的做法 我建议你使用F
  • Memcache 不会刷新或清除内存

    我一直在尝试清除我的内存缓存 因为我注意到使用时存储占用了近 30 的服务器内存ps aux 所以我运行了以下 php 代码 memcache new Memcache memcache gt connect localhost 11211
  • PHP 中的静态类初始值设定项

    我有一个带有一些静态函数的辅助类 类中的所有函数都需要一个 重 初始化函数来运行一次 就好像它是一个构造函数 有实现这一目标的良好实践吗 我唯一想到的就是打电话init函数 如果它已经运行过一次 使用静态 initialized变种 问题是
  • 在另一个文件中扩展类的正确方法是什么?

    这就是我在 foo php 中的内容 class Foo public foo NULL public foo2 NULL public function setFoo foo foo2 this gt foo foo this gt fo
  • 写入 xml 文件时允许的内存大小已耗尽(尝试分配 4459414 字节)[重复] 67108864 字节

    这个问题在这里已经有答案了 可能的重复 php 中允许的内存大小已耗尽 尝试分配 43148176 字节 33554432 字节 https stackoverflow com questions 415801 allowed memory
  • localhost/live - 通过 HTTP_HOST 检测

    假设我在本地开发并在实时服务器上调试小东西 在我的代码中添加这样的内容是个好主意吗 is local strpos SERVER HTTP HOST localhost false define DEBUG is local 然后在设置内容
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • 在 PHP 中将整数转换为十六进制值

    如何将PHP中第一类中的数字转换为第二类中的数字 是否有内置函数来转换数字 也是我的标题 将整数转换为十六进制值 甚至正确 class Permission const READ 1 const UPDATE 2 const DELETE
  • 调用 IndexFaces 操作时出现 InvalidS3ObjectException

    我正在尝试以下教程 https aws amazon com blogs machine learning easily perform facial analysis on live feeds by creating a serverl
  • 将 echo 和 print 合并到一个语句中

    echo 1 print 2 3 返回 214 脚本如何以 14 结尾 当你这样做时 echo 1 print 2 3 PHP 会做 demo http codepad viper 7 com OfrNrs line op fetch ex
  • 2 使用我的代码在数组中查询

    我使用滑块来显示我的 WordPress 精选文章 它选择一个自定义类别并返回一定数量的帖子 如何将显示的第一篇帖子设为自定义帖子 我可以直接在滑块代码中添加特定帖子的 ID吗使该帖子首先出现 然后是原始查询返回的其他内容 例如 在页面上
  • 控制数据是否存在于数组中

    我在mysql中有两个不同的表 我正在使用curl从json文件中获取数据 我的第一个表名称是 tblclients 该表存储客户端数据 我的第二个表名称是 tblcustomfieldsvalues 该表使用 tblclients 表的
  • WordPress - 类别和子类别的嵌套列表

    我正在尝试显示带有嵌套子类别的 WordPress 类别列表 到目前为止 我只能获取父类别列表或不包括父类别的子类别列表 但我无法将两者连接在一起 这是我想要创建的结果 Parent Category 子类别 子类别 Parent Cate
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 使用 Swift 邮件程序发送邮件时出现错误 501

随机推荐

  • 一次获取 NumPy 数组中多个元素的索引(可以重复)

    有没有办法同时获取 NumPy 数组中多个元素的索引 例如 import numpy as np a np array 1 2 4 b np array 1 1 3 2 4 我想找到每个元素的索引a in b 即 0 1 3 4 请注意 b
  • 将变量从 python 文件传递​​到机器人框架变量

    我在机器人框架中分配变量为 Variables TestNAME test 但是我可以从 python 文件传递 变量值吗 test py var test 是否可以赋值var to TESTNAME 如果您有一个名为 test py 的文
  • 根据行/列值设置 GridView 值 ItemStyle 前景色

    我有一个 ASP netGridView输出三列数据 订单编号 订单状态和订单日期 我想设置OrderStatus Field Value RED IF the status Cancelled 我不确定如何查看输出每行的该字段的值并确定状
  • 通过客户端 XHR 打开 Soundcloud Track 的stream_url?

    由于您可以通过 XHR 调用 Soundcloud API 因为它发送的 CORS 标头http backstage soundcloud com 2010 08 of cors we do http backstage soundclou
  • 如何在包含 500+ 张图片的页面上实现延迟加载?

    我基本上有一个预订引擎单位结果页面must显示 40 个单元 每个单元有 1 个大图像的第一个缩略图和 X 个伴随的缩略图 我一直在使用 jquery 延迟加载插件 但它不够彻底 我在 DOM Ready 上调用它 而且它在 IE 中不起作
  • 将位于 SharePoint Server 中的 Excel 文件导入到 SSIS

    在 SSIS 数据流任务中 我寻求使用连接到位于 SharePoint 服务器中的 xlsx 文件的 Excel 源任务来导入数据 最好不要下载其他软件 在 Excel 连接管理器中 我使用以下 Excel 文件路径格式 UNC sps s
  • setData() 上的 CKEditor 内存泄漏

    我认为我遇到了一些与 CKeditor setData 函数相关的大内存泄漏 我有一个网络应用程序 用户可以使用 Javascript 设计自己的内容 CKEditor作为所见即所得的编辑器 供用户编写设计各部分的内容 每次用户单击其设计中
  • extjs - 如何禁用商店分页

    每当商店 Ext data Store 从服务器读取数据 它发送分页参数 例如 page 1 start 0 limit 25 in a json代理或 page 1 start 0 limit 25 用一个direct proxy 我想在
  • 使用图像代替 Bootstrap 的字形图标

    I would like to use a custom image in an input group instead of a Bootstrap glyphicon without padding bottom my image to
  • 使用 Rxjava 检测值变化

    我们可以使用 RxJava 检测类成员值是否发生更改吗 假设一个类中有一个变量 var 现在我们可以使用 RxJava 在 var 的值发生变化时收到通知 你可以使用这样的东西 private final BehaviorSubject
  • 在 MATLAB 中对文本进行聚类

    我想在 MATLAB 中对文本进行层次凝聚聚类 说吧 我有四句话 I have a pen I have a paper I have a pencil I have a cat 我想把上面的四个句子聚类一下 看看哪个更相似 我知道统计工具
  • 在车把的助手中渲染模板

    因为这个问题似乎没有答案 通过车把部分传递变量 https stackoverflow com questions 11523331 passing variables through handlebars partial然而 我目前正在研
  • 与 Python 等效的字符串格式化,使用 Perl 中的字典和哈希值进行格式化

    我喜欢 Python 使用字典格式化字符串的方式 print key1 s and key2 s aDictObj 我想在 Perl 中使用哈希来实现同样的目标 有没有任何片段或小型库可以做到这一点 EDIT 感谢您尝试这个答案 至于我 我
  • 从 javascript 脚本重定向 document.write

    我们希望在我们的网站上投放广告 但与我们洽谈的广告服务器在为我们提供足够快的广告速度方面存在问题 我认为问题是我们应该包括我们要在其中显示广告 然后它将下载脚本并使用 document write 插入一些 html 问题是对广告商网站的调
  • 在 MySQL 数据库中存储 IP 地址(IPv4 和 IPv6)

    好吧 现在我知道类似的问题可能已经被问过一百万次了 但我在这方面是一个真正的新手 我真的很感谢你在这里的帮助 基本上 我想将访问者的 IP 地址存储在 MySQL 中 以便以后检索和验证 我首先需要知道需要使用什么类型的字段来存储 IP 地
  • 如何在android中将网站中的JSON对象解析为数组列表

    如何将 Web 链接中的 JSON 对象解析到 Android 中并将不同的值存储到 ArrayList 中 用户的 JSON 对象如下所示 它来自一个网站 Users name Kane lon 4 371645 lat 31 39691
  • 全局数据库连接参数的存储位置

    Perl 中是否有存储数据库连接参数和其他全局设置的约定 类似于 NET 的 config 文件 背景 我继承了一个基于 Perl 的大型应用程序 其中有一堆 CGI 脚本和几个后台服务 所有这些服务都有硬编码的数据库主机名 用户名和密码
  • 在matlab中读取文本文件(数据转换)

    我正在读取一个文本文件matlab 这是代码 allData textread file s delimiter n numericalArray cellfun s sscanf s f allData un 0 Get Header h
  • 触发下拉菜单的变化事件

    我想使用jquery触发 document ready中下拉列表的更改事件 我在用户详细信息页面中有一个国家和州的级联下拉菜单 我如何使用 C 在 MVC 中设置国家 地区和州的值 根据用户 ID 从数据库中获取 我不太了解 JQuery
  • AWS - Cloudfront - 如何使用 Origin 自定义标头

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