我们有一个设置,将 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 未经授权!
有什么想法吗?
我在这里找到了答案401未经授权!
问题:
GET 请求 Cloudfront 在将请求转发到源之前删除 Authorization 标头字段。 (参见文档)aws 文档
GET 和 HEAD 请求 – CloudFront 在将请求转发到您的源之前删除授权标头字段。
OPTIONS 请求 – 如果您将 CloudFront 配置为缓存对 OPTIONS 请求的响应,CloudFront 会在将请求转发到源之前删除授权标头字段。
DELETE、PATCH、POST 和 PUT 请求 – CloudFront 在将请求转发到源之前不会删除标头字段。
如何修复:
从 UI 控制台转到缓存行为设置并编辑 在基于选定请求的缓存下选择白名单,然后在白名单标头下添加授权
我在尝试在放大域上设置用户/密码时收到此错误。
(2023答案)
Behaviors
选项卡,然后单击编辑cache key and origin requests
下添加旧版缓存设置Authorization
您现在应该能够路由到您的页面,而不会出现 401 错误。