app.UseHsts()和app.UseExceptionHandler()有什么区别?

时间:2018-06-29 01:31:49

标签: c# .net .net-core

在.NET Core应用程序的Startup.cs文件中,默认情况下,它使用

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

但是在某些情况下,我可以找到

的用途
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler();
        }

有什么区别?

3 个答案:

答案 0 :(得分:3)

Hsts是强制使用SSL的安全功能。它与异常无关。

答案 1 :(得分:3)

您应该注意,在针对localhost运行时不会注意到此标头,因为HSTS中间件会忽略对127.0.0.1和本地主机的请求。

此标头也仅通过HTTPS发送

请参见源代码here

答案 2 :(得分:1)

这是一个古老的问题,但是如果您仍然不知道答案,那么这可能会有所帮助。

UseHsts向响应添加标头Strict-Transport-Security。当使用HTTPS访问该站点时,浏览器会将其记录下来,将来使用HTTP的请求将重定向到HTTPS。因此,必须至少使用一次HTTPS访问该站点才能完成此工作。

此外,Strict-Transport-Security标头设置的到期时间也已过去,下次通过HTTP加载网站的尝试不会自动重定向到HTTPS。