基本上任何来自 HTTPS 请求的 HTTP 301 响应表明目标重定向到 HTTP 都不应该被任何浏览器所接受,那些这样做的服务器显然违反了基本安全性,或者受到了一些损害。但是,对 HTTPS 请求的 301 回复仍然可以重定向到另一个 HTTPS 目标(包括在另一个域上,前提是满足其他 CORS 要求)。
如果您浏览 HTTPS 链接(或 javascript 事件处理程序)并且浏览器开始加载响应 301 重定向到 HTTP 的 HTTPS 目标,则浏览器的行为应该类似于 500 服务器错误或连接失败( DNS 名称未解析,服务器未响应超时)。
这样的服务器端重定向显然是无效的。网站管理员永远不应该这样做!如果他们想关闭服务并通知 HTTPS 用户该服务托管在其他地方并且不再安全,他们必须返回一个有效的 HTTPS 响应页面,根本没有重定向,这应该是一个 4xx 错误页面(很可能是 404 PAGE NOT FOUND)并且他们不应重定向到不遵守 CORS 要求或发送虚假媒体类型的另一个 HTTPS 服务(例如,第三方托管的搜索引擎或停车页面)(可以不接受请求的语言和显示该页面以另一种语言显示)。
实现 HSTS 的浏览器是完全正确的,并且朝着正确的方向发展。但我真的认为 CORS 规范是一团糟,只是进行了调整,以仍然允许广告网络托管和控制他们向其他网站广播的广告。
我强烈认为,出于正当理由仍想展示广告(或任何用于受众测量的跟踪器)的严肃网站可以自己托管这些广告/跟踪器,在自己的域上并使用相同的协议:服务器仍然可以让自己获得他们自己的广告内容希望通过自己下载/刷新这些广告并维护自己的本地缓存来进行广播。如果他们希望第三方分析这些数据,他们可以通过收集他们需要和想要的数据并在自己的服务器上对其进行过滤来自行跟踪他们的受众:网站必须认真执行自己的隐私要求。
我现在讨厌那些在访问时被数十个第三方跟踪的太多网站,包括像 Facebook 和大多数广告网络这样非常具有侵入性的网站,以及许多质量/安全性非常差并且发送非常糟糕的非常薄弱的第三方服务他们无法控制的内容(包括虚假广告、虚假新闻、宣传非法活动、非法业务、无效年龄分级......)。
让我们回到网络的起源:一个站点,一个域,一个第三方。这并不意味着他们不能链接到其他第三方网站,但这些必须仅通过明确的用户操作(点击或点击)来完成,并且访问者必须能够知道这将转到哪里,或者将显示哪些内容.
这甚至可以在新闻文章中插入视频(例如 Youtube):新闻网站可以为自己托管一个静态图像缓存,用于框架和“播放”按钮的图标:当用户单击该图标时,它将开始激活第三个方视频,在这种情况下,第三方将直接与该用户交互并可以收集其他数据。但未激活的内容将仅由原始网站根据其发布的政策进行跟踪。