【问题标题】:Redirect To Error when Client Side is using older HTTP Version客户端使用旧 HTTP 版本时重定向到错误
【发布时间】: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版本

【问题讨论】:

    标签: asp.net .net asp.net-mvc razor httpverbs


    【解决方案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 中打开 Stackoverflow 时会发生这种情况:

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

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

    【讨论】:

    • 感谢您的解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2018-01-04
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    相关资源
    最近更新 更多