客户端使用旧 HTTP 版本时重定向到错误
Posted
技术标签:
【中文标题】客户端使用旧 HTTP 版本时重定向到错误【英文标题】:Redirect To Error when Client Side is using older HTTP Version 【发布时间】:2021-12-26 05:33:16 【问题描述】:我认为这是一个理论问题。我有一个关于 dotnet 框架 4.5 的项目,我需要做的是,每当客户端使用较旧的 httpversion 时,我都必须将其重定向到错误页面。 我得到这样的http版本
var d = Request.ServerVariables["SERVER_PROTOCOL"];
它给出的值是“HTTP/1.1”。我认为这是 Request 的 http 版本。正确的?现在我的问题是
//
CASE 1) 我们是否必须在服务器上设置 http 版本并将我们的服务器版本与我们从 Request.ServerVariables["SERVER_PROTOCOLS"] 获得的版本进行比较或
//
案例 2)我必须通过简单的字符串比较将它与最新的 http 版本(在 google 上显示 HTTP/2)进行比较
var d = Request.ServerVariables["SERVER_PROTOCOL"];
if(d=="HTTP1.1") //"HTTP/2 either of which is latest"
如果是 CASE 1,那么我们如何设置服务器的 http 版本,如果是 CASE 2,那么如果以后 httpversion 更改为“HTTP/3”,那么我是否必须再次编写代码并更改最新的条件http版本
【问题讨论】:
【参考方案1】:我得到这样的 http 版本
var d => Request.ServerVariables["SERVER_PROTOCOL"];
它正在赋予价值 “HTTP/1.1”。我认为这是 Request 的 http 版本。对吧?
是的
我们是否必须在服务器上设置 http 版本并比较我们的服务器 版本与我们从中获得的版本 Request.ServerVariables["SERVER_PROTOCOLS"]
您想要支持的版本完全取决于您。如果你想支持 min
HTTP/2 然后在服务器上创建一个配置值:MinHttpVersion = 2
上述方法的问题
我不知道您为什么这样做,但似乎是一个奇怪的要求,您可能会遇到一些与 SEO 相关的问题:
1> 机器人/爬虫:您需要区分用户和爬虫。爬虫不一定使用 Flash 浏览器,这样,您最终可能会阻止它们。您需要 detect crawlers 并将它们排除在任何版本要求之外。
2> 重定向到错误页面:这不是错误情况,不应重定向到错误页面。重定向是一种糟糕的用户体验(增加了页面加载时间),并且会使您的网站在 SEO 排名中下降。
更好的方法
不清楚您为什么要这样做?我怀疑您不想支持较旧的浏览器?如果是这种情况,那么常见的方法是检查用户的浏览器版本。例如,当您在 IE 中打开 *** 时会发生这种情况:
因此,您需要确定要支持的每种浏览器的最低版本。然后您需要检测用户的浏览器,如果它太旧,则显示“过时的浏览器”消息(不要重定向到错误页面)并确保排除爬虫。
您可以在服务器端和客户端执行此操作。 This library 可能会给你一些想法。
【讨论】:
感谢您的解释以上是关于客户端使用旧 HTTP 版本时重定向到错误的主要内容,如果未能解决你的问题,请参考以下文章