通过CloudFront端点进行呼叫时,获得401未经授权的响应

时间:2019-05-21 10:23:03

标签: aws-api-gateway amazon-cloudfront api-gateway

我们有一个设置,其中我们将CloudFront置于后端API(代理)的前面。

所有端点均成功完成。 POST请求没问题,但是GET请求没有。

-

呼叫代理:

  

POST https://proxy.api.com/add ::响应成功!

     

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

通过CloudFront致电:

  

POST https://abc.cloudfront.net/add ::响应成功!

     

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

有什么主意吗?

2 个答案:

答案 0 :(得分:0)

我在这里401 Unauthorized!

找到了答案

问题:

GET请求Cloudfront在将请求转发到源之前删除“授权”标头字段。 (请参阅文档)aws doc

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

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

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

如何解决:

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

cloudfront

答案 1 :(得分:0)

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

解决方案是在行为中添加此路径以禁用缓存,并将其全部移至原始位置

enter image description here