我正在尝试创建自己的RequireHttps属性,因为我不想使用Mvc中的RequireHttpsAttribute。我只想拒绝非安全连接,而不是强迫他们使用SSL重新发送它们。我从Microsoft网页复制了一个函数,但由于某种原因,该属性拒绝了两个连接,http和https。
这是我的代码,任何人都知道如何修复它或以其他方式来解决方案?
[AttributeUsageAttribute(AttributeTargets.Class | AttributeTargets.Method, Inherited = true,
AllowMultiple = true)]
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
答案 0 :(得分:0)
actionContext.Request.Method != HttpMethod.Options
条件的这一部分将拒绝任何不使用OPTIONS
HTTP方法的请求。因此,条件转换为它将拒绝除通过HTTPS发出的OPTIONS
请求之外的任何请求。这包括任何GET
,POST
等
尝试不使用条件的第二部分:
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)