本篇文章给大家谈谈asp.net-mvc-3–mvc3https&http,同时本文还将给你拓展Asp.NetMVCHttps设置、ASP.NETMVC&C#:HttpStatusCodeResult
本篇文章给大家谈谈asp.net-mvc-3 – mvc3 https&http,同时本文还将给你拓展Asp.Net MVC Https设置、ASP.NET MVC&C#:HttpStatusCodeResult()vs HttpNotFound()、asp.net – 如何在MVC3中使用https生成绝对URL?、asp.net-mvc – 404 Asp.Net中的Http错误处理程序MVC(RC 5)等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- asp.net-mvc-3 – mvc3 https&http
- Asp.Net MVC Https设置
- ASP.NET MVC&C#:HttpStatusCodeResult()vs HttpNotFound()
- asp.net – 如何在MVC3中使用https生成绝对URL?
- asp.net-mvc – 404 Asp.Net中的Http错误处理程序MVC(RC 5)
asp.net-mvc-3 – mvc3 https&http
任何建议都会很棒!
解决方法
RequireHttpsAttribute
课可能是你想要的.
[RequireHttps] public ActionResult SignIn() { return View(); }
Asp.Net MVC Https设置
1. IIS设置
1.1 创建SSL证书
点击左侧菜单栏顶部,点击“功能视图”里的“服务器证书”:
点击“创建自动签名证书”创建自动签名证书:
1.2 设置SSL证书
点开网站,在“功能视图”里点击“SSL设置”:
如图,设置SSL:
1.3 绑定SSL证书
点开网站,在右侧“操作”栏点击“绑定”:
添加“网站绑定”,选择https及刚刚创建的SSL证书,主机名(也就是域名)根据需要选设(IIS7默认不支持,需要在配置文件applicationHost.config里进行设置,详见注):
【注】域名也可以通过配置进行设置:
打开C:\Windows\system32\inetsrv\config\applicationHost.config在里面找到
<bindings>
<binding protocol="https" bindingInformation="*:443:" />
<binding protocol="http" bindingInformation="*:80:www.yourdomain.com" />
</bindings>
找到https的配置项目,修改为:
<binding protocol="https" bindingInformation="*:443:www.yourdomain.com"/>
这里面需要注意的是:bindings节点有多个,需要找到你配置的站点,默认是
<binding protocol="https" bindingInformation="*:443" />
2.强制使用https
MVC操作非常简单,只需要在网站Index设置RequireHttps特性即可:
[RequireHttps]
public ActionResult Index()
{
return View();
}
这是一种投机的设置,合理的做法应该是在项目Global.asax文件 Application_Start中添加过滤:
GlobalFilters.Filters.Add(new RequireHttpsAttribute());
3.https使用中的问题
3.1 百度地图的问题
https的网站使用百度地图,如果你引用的地址没写对的话,加载不出来百度地图,被认为是不安全的JS内容。解决方式:
https://api.map.baidu.com/api?v=2.0&ak=你的密钥&s=1
加上s=1代表引用的是https的。
3.2 加密会话(SSL)Cookie 中缺少 Secure 属性问题
服务器开启了Https时,cookie的Secure属性应设为true,否则,在进行IBM AppScan安全扫描时,就会扫出下面的问题:
解决办法:
1. 修改web.config,添加:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" />
<system.web>
2. 修改后台写Cookies时的设置 cookie.Secure = true:
1 HttpResponse response = HttpContext.Current.Response;
2 var cookie = new HttpCookie(key, value);
3 cookie.HttpOnly = true;
4 cookie.Path = "/";
5 cookie.Expires = DateTime.Now.AddHours(1);
6 cookie.Secure = true;
7 response.AppendCookie(cookie);
参考资料:
IIS配置HTTPS
C# MVC 网站将http强制跳转到https
IBM AppScan 安全扫描:加密会话(SSL)Cookie 中缺少 Secure 属性 处理办法
ASP.NET MVC&C#:HttpStatusCodeResult()vs HttpNotFound()
return new HttpStatusCodeResult(HttpStatusCode.NotFound);
还有这个:
return HttpNotFound();
解决方法
asp.net – 如何在MVC3中使用https生成绝对URL?
解决方法
public static class UrlHelperExtension { public static string Absolute(this UrlHelper url,string relativeOrAbsolute) { var uri = new Uri(relativeOrAbsolute,UriKind.RelativeOrAbsolute); if (uri.IsAbsoluteUri) { return relativeOrAbsolute; } // At this point,we kNow the url is relative. return VirtualPathUtility.ToAbsolute(relativeOrAbsolute); } }
你会喜欢的:
@Url.Absolute(Url.Content("~/Content/Image.png"))
(没有自己测试,随意玩弄,使其正常工作。)
这有助于您为您的内容文件生成绝对URL。为了更改生成的URL的方案,您可以创建一个额外的扩展方法来处理给定URL的方案,以使其成为HTTPS或其他。
正如哈立德在评论中指出的那样,类似的扩展方法已经可以在各种开源项目中使用,您可以使用(鉴于许可证许可)。一个例子可以发现@L_301_1@。
asp.net-mvc – 404 Asp.Net中的Http错误处理程序MVC(RC 5)
解决方法
添加通配符路由规则作为最终规则:
routes.MapRoute("Error","{*url}",new { controller = "Error",action = "Http404" });
任何与其他规则不匹配的请求都会路由到错误控制器的Http404操作,您还需要配置它:
public ActionResult Http404(string url) { Response.StatusCode = 404; ViewData["url"] = url; return View(); }
关于asp.net-mvc-3 – mvc3 https&http的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Asp.Net MVC Https设置、ASP.NET MVC&C#:HttpStatusCodeResult()vs HttpNotFound()、asp.net – 如何在MVC3中使用https生成绝对URL?、asp.net-mvc – 404 Asp.Net中的Http错误处理程序MVC(RC 5)的相关信息,请在本站寻找。
本文标签: