发送 Strict-Transport-Security 标头,但 Chrome 仍在通过 http 请求
Posted
技术标签:
【中文标题】发送 Strict-Transport-Security 标头,但 Chrome 仍在通过 http 请求【英文标题】:Sent Strict-Transport-Security header, but Chrome is still requesting via http 【发布时间】:2019-05-17 08:11:34 【问题描述】:我正在使用自定义域在 Google App Engine 上运行一个新站点,并且我希望所有流量都通过 https。
我在http://rublonde.com/tmp创建了一个测试脚本:
<?
header("Strict-Transport-Security: max-age=180; includeSubdomains");
print $_SERVER['HTTP_X_FORWARDED_PROTO'];
(站点的内容与域名不匹配,我只是暂时将此域用作自定义域,以便让 HTTPS 标头工作正常。)
在 Google App Engine 中,HTTP_X_FORWARDED_PROTO
将是 http
或 https
。在第一次加载此页面时,我假设它会获取 HSTS 标头,然后在页面的后续加载中,Chrome 应该会自动通过 https 请求页面。
我是否误解了 HSTS 的工作原理?难道我做错了什么?
【问题讨论】:
【参考方案1】:啊,我意识到 HSTS 标头在通过 http 连接发送时会被忽略(我认为是因为它们需要与 https 连接附带的有效证书相关联)。
https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security#HSTS_mechanism_overview
服务器通过通过 HTTPS 提供标头来实现 HSTS 策略 连接(HTTP 上的 HSTS 标头被忽略)。
【讨论】:
这与与证书关联无关 - 这是一项安全功能。 HTTP 请求可以在传输过程中更改,如果您可以将 HSTS 添加到不支持 HTTPS 的站点,那么您可以针对任何流量被拦截的用户长时间拒绝该站点。只有在通过有效的 HTTPS 连接发送时使用它才能防止这种情况发生。以上是关于发送 Strict-Transport-Security 标头,但 Chrome 仍在通过 http 请求的主要内容,如果未能解决你的问题,请参考以下文章
本地能正常发送邮件 阿里云服务器端发送邮件提示已经成功了 但是发送不过来 显示 Failure sending mail.
把excel文件用outlook发送时,还要再打开outlook中点击“发送接受”按钮才能发送,能否直接从excel中发送