碰上了一个诡异问题
nginx 配了域名转发 客户端配置 hosts 文件
server { listen 80; server_name sso.mibox.dev; location / { proxy_pass http://127.0.0.1:10088; } } server { listen 80; server_name sso.mibox.com; location / { proxy_pass http://127.0.0.1:10088; } }
客户端通过 curl 请求两个域名得到的响应是预期中的
通过 chrome 打开 sso.mibox.com 是正常的
但是打开 sso.mibox.dev 会给我 307 转发到 https 上
HTTP/1.1 307 Internal Redirect Location: https://sso.mibox.dev/ Cross-Origin-Resource-Policy: Cross-Origin Non-Authoritative-Reason: HSTS
如果说有区别的话 客户端安装了自定义的 CA 相关 sso.mibox.dev 这个域名
按理来说即使有这个 ca 也不应该影响 http 的访问
那位大佬帮忙分析以下为什么 sso.mibox.dev 为什么浏览器会自动转发至 https
软件版本
![]() | 1 dallaslu 2024-04-01 10:40:30 +08:00 ![]() get.dev 首页说明: > The .dev top-level domain is included on the HSTS preload list, making HTTPS required on all connections to .dev websites and pages without needing individual HSTS registration or configuration. |
![]() | 4 coala 2024-04-01 10:49:19 +08:00 可以关注下 307 Temporary Redirect 和 307 Internal Redirect 的区别, Internal Redirect 是浏览器行为, 都是谷歌干的。 |
![]() | 6 gentrydeng 2024-04-01 11:10:11 +08:00 via Android @sankooc #3 .DEV 全域都是 HSTS |
![]() | 7 rrfeng 2024-04-01 11:32:39 +08:00 HSTS 有个 preload list ,写死在浏览器里的,根本不 care 你 server 什么设置。 --- 有个坑貌似是,chrome 会收集支持 hsts 的站点然后加入到 preload list 里,然后你就永远只能 https 没法降级了。 |
![]() | 8 shierji 2024-04-01 12:02:12 +08:00 这里偏个题,某办公室部分电脑能上部分电脑不能上某 ZF 网站,排查半天最后发现是不知道啥时候那个 URL 进 HSTS Preload list 了,然而丫根本不支持 HTTPS |
![]() | 9 jim9606 2024-04-01 12:13:04 +08:00 via Android @rrfeng 这个 preload list 是要申请的,审核要求整个域名响应都要带 HSTS includesubdomains 、preload 和足够长的 maxage ,目的是防止首次访问的 http->https 跳转就被劫持。因为很难撤回,所以只建议在 https 部署稳定可靠后再申请 preload 。 https://hstspreload.org/ @shierji 是不是 HSTS 头配错了(添加了 preload 属性,不打算预置的绝对不要加),然后被第三者申请 preload 了。 |
11 ZeroAsh 2024-04-01 16:03:04 +08:00 偏个题,可以试试直接用 certbot 搞个免费的证书~也可以用配置下域名解析,然后申请通配的免费证书,但都得定时续期~ 也有自动续期的工具,配好之后还是蛮方便的。 |