繁体   English   中英

AWS apigateway cloudfront expressjs应用程序始终显示api-gateway网址

[英]aws apigateway cloudfront expressjs app always displaying api-gateway url

这比任何与代码相关的问题更多的是技术问题。 我有一个使用aws- serverless -express w在api-gateway上运行的expressjs应用程序,它允许您在api-gateway上进行最少的更改即可移植一个expressjs应用程序。 但是,因为APIG为每次api部署都为您生成了一个url,其中包含api-id,所以这不是客户端友好的。 因此,我设置了指向APIG网址的cloudfront发行版。

但是,当我运行该应用程序时,浏览器中显示的网址不是cloudfront生成的网址(尽管我使用该网址转到该应用程序),而是创建的一个APIG。

我知道APIG中有一个选项可以设置自定义域名,经过一些研究后,APIG在后台设置了Cloudfront发行版,但是因为我不是设置DNS服务的人,所以没有权限更改针对AWS上特定角色/区域的这些设置,想知道问题是否出在自定义url是否未通过APIG的选项进行设置的事实吗?

如果在浏览器的地址栏中输入正确的URL,然后按Enter,则将显示此页面。 如果服务器发送重定向状态代码(301、302、307等),则浏览器地址栏中的URL可能会更改。

要调试此功能,请在浏览器中打开Web检查器,选择“网络”选项卡,然后遵循HTTP请求。 如果看到重定向状态,请查看标题以找出发送它的系统。

编辑:如果CloudFront通过HTTP访问API网关,则它会发送301重定向到HTTPS。 这似乎是这里的问题。 如另一个答案所指出的那样,强制CloudFront仅通过HTTPS访问API网关可以解决此问题。

在另一个SO问题中找到了正确的答案!

本质上,必须在cloudfront中更改一些设置。

检查我的CloudFront分发上的“查看器协议策略”设置为“将HTTP重定向到HTTPS”或“仅HTTPS”,并将“源协议策略”设置为“仅HTTPS”。

这似乎为我解决了这个问题。

我建议不要设置指向您的API网关端点的CF分配。 API网关已经包含CF发行版。 如果您已经拥有域名和证书,则可以使用“自定义域名”功能轻松地将其直接导入API Gateway: http : //docs.aws.amazon.com/apigateway/latest/developerguide/how-to -custom-domains.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM