gpt4 book ai didi

api - Cloufdront 屏蔽用户代理和远程地址

转载 作者:行者123 更新时间:2023-12-03 19:34:15 29 4
gpt4 key购买 nike

我们正在运行一个与 API 通信的 SPA。两者都通过 Cloudfront 向公众公开。

我们现在遇到的问题是,我们在后端看到的请求被 Cloudfront 屏蔽了。意义:

  • 我们看到的远程地址是 AWS 云的地址
  • User Agent Header 字段设置为“Amazon Cloudfront”而不是用户的浏览器

  • 所以 Cloudfront 以某种我们没有预料到的方式拦截了请求。

    我已经完成了这些步骤: https://aws.amazon.com/premiumsupport/knowledge-center/configure-cloudfront-to-forward-headers/但最终切断了 API 和前端之间的连接。

    我们不关心缓存影响(我们没有很多流量),我们只需要在后端显示正确的字段。

    最佳答案

    默认情况下,大多数请求 header 都会被删除,因为 CloudFront 的默认行为通常是围绕最佳缓存设计的。 CloudFront 的默认 header 处理行为 is documented .

    如果您需要在源处查看特定 header ,请将这些 header 列入白名单以在缓存分发中转发。文档将此称为 “Selecting the Headers on Which You Want CloudFront to Base Caching” -- 这就是它所做的 -- 但该描述掩盖了实际发生的情况。 CloudFront 会删除其余的 header ,因为它无法确定具有特定值的特定 header 是否会更改源生成的响应。如果默认情况下它没有删除这些 header ,那么当用户看到从缓存提供的“错误”响应时,就会在另一个方向上产生混淆。

    在您的情况下,您几乎肯定不想包含 Host将您列入白名单以进行转发的 header 。

    尤其是在测试时,请确保您还set the Error Caching Minimum TTL to 0 ,因为默认值是300秒...所以你修复后最多5分钟看不到问题是否修复。此默认设置也是设计使然,这是一种保护措施,可避免您的源因可能继续失败的请求而过载。

    在检查来自 CloudFront 的响应时,请留意 Age响应 header ,任何时候从缓存提供响应时都会出现该 header 。它告诉您自 CloudFront 获得当前返回给您的响应以来已经过去了多长时间(以秒为单位)。

    如果您想禁用 CloudFront 缓存,您可以将最大、最小和默认 TTL 全部设置为 0(这仅影响 2xx 和 3xx HTTP 响应——错误缓存在不同的时间窗口,如上所述),或者您的源可以始终如一地返回 Cache-Control: s-maxage=0 ,这将阻止 CloudFront 缓存响应。

    关于api - Cloufdront 屏蔽用户代理和远程地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51424736/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com