当客户端使用较旧的 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 图书馆可能会给你一些想法。
我认为这是一个理论问题。我有一个关于 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 图书馆可能会给你一些想法。