当客户端使用较旧的 HTTP 版本时重定向到错误

Redirect To Error when Client Side is using older HTTP Version

我认为这是一个理论问题。我有一个关于 dotnet 框架 4.5 的项目,我需要做的是,每当客户端使用较旧的 httpversion 时,我都必须将其重定向到错误页面。 我得到这样的 http 版本

 var d = Request.ServerVariables["SERVER_PROTOCOL"];

并且它给出值“HTTP/1.1”。我认为这是 Request 的 http 版本。正确的?现在我的问题是

//

案例 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”那么我是否必须再次编写代码并更改最新 httpversion

的条件

I am getting http version like this

var d => Request.ServerVariables["SERVER_PROTOCOL"]; 

and it is giving value "HTTP/1.1". I think this is the http version of Request. Right?

Do we have to set http version on server and compare our server version with the version that we get from Request.ServerVariables["SERVER_PROTOCOLS"]

完全取决于您要支持的版本。如果你想支持 min HTTP/2 然后在服务器上创建一个配置值:MinHttpVersion = 2

上述方法的问题

我不知道你为什么要这样做,但似乎是一个奇怪的要求,你可能 运行 遇到一些与 SEO 相关的问题:

1> Bots/Crawlers:需要区分用户和爬虫。爬虫不一定使用 Flash 浏览器,这样一来,您可能最终会阻止它们。您需要 detect crawlers 并将它们从任何版本要求中排除。

2> 重定向到错误页面:这不是错误情况,不应重定向到错误页面。重定向是一种糟糕的用户体验(增加页面加载时间)并且会降低您网站的 SEO 排名。

更好的方法

不清楚你为什么要这样做?我怀疑您不想支持旧版浏览器?如果是这种情况,那么常见的方法是检查用户的浏览器版本。例如,当您在 IE:

中打开 Whosebug 时会发生这种情况

因此,您需要确定要支持的每个浏览器的最低版本是什么。然后你需要检测用户的浏览器,如果它太旧显示“过时的浏览器”消息(不要重定向到错误页面)并确保你排除爬虫。

您可以在服务器端和客户端执行此操作。 This 图书馆可能会给你一些想法。