【问题标题】:Force http to https redirect across entire Angular app在整个 Angular 应用程序中强制 http 到 https 重定向
【发布时间】:2018-08-16 20:27:48
【问题描述】:

我有一个Angular (6) 应用程序使用.net Web API w/ Windows 身份验证。两者都部署到具有有效 SSL 证书的同一开发 Web 服务器。

我正在尝试在我的所有页面上强制执行 http to https 重定向。我已经处理了 Web API 方面 - 通过 Kudvenkat 的简单教程重定向到 https 的所有 /api 路径:http://csharp-video-tutorials.blogspot.com/2016/09/aspnet-web-api-enable-https.html

创建一个RequireHttpsAttribute.cs类:

using System;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;

namespace api
{
    public class RequireHttpsAttribute : AuthorizationFilterAttribute
    {
        public override void OnAuthorization(HttpActionContext actionContext)
        {
            if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
            {
                actionContext.Response = actionContext.Request
                    .CreateResponse(HttpStatusCode.Found);
                actionContext.Response.Content = new StringContent
                    ("<p>Use https instead of http</p>", Encoding.UTF8, "text/html");

                UriBuilder uriBuilder = new UriBuilder(actionContext.Request.RequestUri);
                uriBuilder.Scheme = Uri.UriSchemeHttps;

                uriBuilder.Port = 443;

                actionContext.Response.Headers.Location = uriBuilder.Uri;
            }
            else
            {
                base.OnAuthorization(actionContext);
            }
        }
    }
}

WebApiConfig.cs:

public static void Register(HttpConfiguration config)
{
    config.Filters.Add(new RequireHttpsAttribute());
}

但就 Angular 路由(看起来不像 https://myurl.com/api,而是看起来像 https://myurl.com/index.html# 的路由)而言,我无法让这些路由重定向到 https。在Web API 代码和Angular 代码中都必须指定http to https 重定向是否正常?

如果没有,也许我们需要将我们的网络服务器配置为只使用https

【问题讨论】:

    标签: angular ssl redirect asp.net-web-api https


    【解决方案1】:

    我通过在 web.config 中使用 URL 重写来做到这一点,如下所示:

      <system.webServer>
        <rewrite>
          <rules>
            <rule name="HTTPS" stopProcessing="true">
              <match url="(.*)" />
              <conditions>
                <add input="{HTTPS}" pattern="off" ignoreCase="true" />
              </conditions>
              <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
            </rule>
          </rules>
        </rewrite>
      </system.webServer>
    

    这应该同时处理 WebApi 和 MVC/HTML/等。

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 2016-11-14
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 2017-08-30
      • 2020-07-23
      • 2018-07-22
      • 1970-01-01
      相关资源
      最近更新 更多