Asp.net core asp.net核心中RequireHttps属性和UseHttpsRedirection之间的差异

Asp.net core asp.net核心中RequireHttps属性和UseHttpsRedirection之间的差异,asp.net-core,Asp.net Core,我正在浏览官方文档,以便在ASP.NET核心中强制使用HTTPS。在那里我发现了一个警告- 不要在接收敏感信息的Web API上使用RequireHttpAttribute 信息。RequireHttpAttribute使用HTTP状态代码重定向 从HTTP到HTTPS的浏览器。API客户端可能不理解或不遵守 从HTTP重定向到HTTPS。这些客户可以通过电子邮件发送信息 HTTP。Web API应: 不在HTTP上侦听 关闭状态代码为400(错误请求)的连接,不提供请求 我所知道的[Requi

我正在浏览官方文档,以便在ASP.NET核心中强制使用HTTPS。在那里我发现了一个警告-

不要在接收敏感信息的Web API上使用RequireHttpAttribute 信息。RequireHttpAttribute使用HTTP状态代码重定向 从HTTP到HTTPS的浏览器。API客户端可能不理解或不遵守 从HTTP重定向到HTTPS。这些客户可以通过电子邮件发送信息 HTTP。Web API应:

  • 不在HTTP上侦听
  • 关闭状态代码为400(错误请求)的连接,不提供请求
  • 我所知道的[RequireHttps]属性是设置302找到的代码和重定向url。类似这样的事情-

    GET http://api.example.com/values
    
    302 Found
    Location: https://api.example.com/values
    
    另一方面,官方文件建议使用-

    HTTPS重定向中间件(使用HttpSreDirection)重定向HTTP 对HTTPS的请求

    • 使用默认的HttpsRedirectionOptions.RedirectStatusCode(Status307TemporaryRedirect)
    据我所知,它还将HTTP重定向到HTTPS,状态代码为307

    对我来说,他们也在做类似的事情。我不清楚使用
    HTTPS重定向中间件(UseHttpsRedirection)
    而不是
    RequireHttps属性
    能给我带来什么好处。我错过了什么

    我正在浏览官方文档,以便在ASP.NET核心中强制使用HTTPS

    我所知道的[RequireHttps]属性是设置302找到的代码和重定向url

    另一方面,官方文档建议使用HTTPS重定向中间件(UseHttpsRedirection)

    对我来说,他们也在做类似的事情

    我想您提到的信息来自“在ASP.NET核心中强制使用HTTPS”

    正如我们所知,对于Web API场景,API客户端(消费者/调用方应用程序)可能不是浏览器客户端,浏览器客户端无法理解或遵守通过HTTP状态代码从HTTP到HTTPS的重定向。我们应该避免使用带有重定向状态代码的API端点响应客户端,因为警告部分建议“不要在接收敏感信息的Web API上使用”

    在警告部分,它还展示了两种拒绝Web API的不安全HTTP请求的方法:1)不公开HTTP端点;2) 返回一个错误代码。在我看来,这里讨论的是“拒绝Web API场景中不安全的HTTP请求”


    此外,我们应该注意,本文档的主题是关于在ASP.NET Core中将HTTP请求重定向到HTTPS,
    requireHttpAttribute
    可以应用于特定的控制器/操作,以对整个ASP.NET Core web应用强制使用HTTPS,建议使用HTTPS重定向中间件(这并不意味着我们应该使用该中间件来拒绝Web api的不安全HTTP请求)。

    因此,我从您的回答中了解到了这一点(如果我错了,请纠正我),建议的方法是不要让请求转到api端点,然后重定向,而是使用中间件来执行重述。如doc所述“没有API可以阻止客户端在第一次请求时发送敏感数据”。推荐的方法是:1)不侦听HTTP;2)返回错误代码,不为非HTTPS请求提供服务。