【发布时间】: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