Asp.net core asp.net核心中RequireHttps属性和UseHttpsRedirection之间的差异
我正在浏览官方文档,以便在ASP.NET核心中强制使用HTTPS。在那里我发现了一个警告- 不要在接收敏感信息的Web API上使用RequireHttpAttribute 信息。RequireHttpAttribute使用HTTP状态代码重定向 从HTTP到HTTPS的浏览器。API客户端可能不理解或不遵守 从HTTP重定向到HTTPS。这些客户可以通过电子邮件发送信息 HTTP。Web API应: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
GET http://api.example.com/values
302 Found
Location: https://api.example.com/values
另一方面,官方文件建议使用-
HTTPS重定向中间件(使用HttpSreDirection)重定向HTTP
对HTTPS的请求
- 使用默认的HttpsRedirectionOptions.RedirectStatusCode(Status307TemporaryRedirect)
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请求提供服务。