通过 CloudFront 端点调用时收到 401 未经授权的响应

问题描述 投票:0回答:3

我们有一个设置,将 CloudFront 放在后端 API(代理)前面。

所有端点几乎都成功了。 POST 请求正常,但是 GET 请求却不行。

-

调用代理:

POST https://proxy.api.com/add :: 回复成功!

GET https://proxy.api.com/ping :: 响应成功!

通过 CloudFront 调用:

POST https://abc.cloudfront.net/add :: 回复成功!

获取https://abc.cloudfront.net/ping::401 未经授权!

有什么想法吗?

aws-api-gateway amazon-cloudfront api-gateway
3个回答
3
投票

我在这里找到了答案401未经授权!

问题:

GET 请求 Cloudfront 在将请求转发到源之前删除 Authorization 标头字段。 (参见文档)aws 文档

GET 和 HEAD 请求 – CloudFront 在将请求转发到您的源之前删除授权标头字段。

OPTIONS 请求 – 如果您将 CloudFront 配置为缓存对 OPTIONS 请求的响应,CloudFront 会在将请求转发到源之前删除授权标头字段。

DELETE、PATCH、POST 和 PUT 请求 – CloudFront 在将请求转发到源之前不会删除标头字段。

如何修复:

从 UI 控制台转到缓存行为设置并编辑 在基于选定请求的缓存下选择白名单,然后在白名单标头下添加授权

cloudfront


1
投票

这是因为路径 ping/* 无法访问 origin

解决方案是在行为中添加此路径以禁用缓存并全部转到原点


0
投票

我在尝试在放大域上设置用户/密码时收到此错误。

(2023答案)

  1. 在您的 Cloudfront 发行版中,导航至
    Behaviors
    选项卡,然后单击编辑
  2. cache key and origin requests
    下添加旧版缓存设置
  3. 添加标题,
    Authorization
  4. 保存更改

您现在应该能够路由到您的页面,而不会出现 401 错误。

© www.soinside.com 2019 - 2024. All rights reserved.