【问题标题】:how to enforce https-only on incoming traffic如何对传入流量强制执行 https-only
【发布时间】:2020-12-23 22:08:03
【问题描述】:
我的 Web 应用程序在 GCP 上,并接受 http 和 https 上的请求。我想只强制执行https 连接,而不会给用户体验造成摩擦。
如果我删除http,那么我担心输入http://mywebapp.com 的用户会得到404。正确的方法应该是接受http 和https 上的请求并重定向http 请求(303),以便客户端使用https 再次发送请求?
- 上面可以做吗?
- 这不会增加我的流量成本(在
gcp 上由于重定向/重复请求)
- 还有其他更好的方法来实现我想要的吗?
【问题讨论】:
标签:
google-cloud-platform
https
webserver
playframework-2.6
【解决方案1】:
是的,网站升级到安全连接是很常见的。 GCP 负载平衡器可以将请求“升级”到 HTTPS。按照他们的step-by-step documentation 启用此功能。
上面可以做吗?
是的。
这不会增加我的流量成本(在 gcp 上由于重定向/重复请求)
应该可以忽略不计,因为重定向应该是永久性的 (301),使客户端能够在后续请求中升级到 HTTPS。
还有其他更好的方法来实现我想要的吗?
还有其他方法。是否“更好”取决于您的具体用例。几乎可以在应用程序的任何层执行重定向。如果您没有做任何特别有用的事情,除了将不安全重定向到安全之外,那么最好尽快完成(例如负载均衡器)。为最终重定向的不安全请求提供服务将消耗不必要的资源(连接、内存等),因此最好避免。