当用户访问我仅通过 SSL/TLS 端口 80 运行的服务器时,我应该使用 进行通告Upgrade Required (426)
还是重定向Moved Permanently (301)
?
每种方法的缺点和优点是什么?
据我所知,所有现代浏览器都支持 TLS 升级。但是,我发现w3m
、lynx
等不支持; 、 和各种机器人也不curl
支持wget
。
答案1
它好像仅当您实际尝试协商 TLS 并且失败时,才会抛出 426。由于用户仅使用 HTTP,我们还不知道他们的 SSL 功能,因此您需要做的是将用户 301 转至 HTTPS,然后如果他们无法处理 TLS,则抛出 426。