在我的MVC4 Mobile應用程序中,我有註冊,登錄頁面和其餘頁面。我想重定向用戶到HTTPS連接的所有敏感信息頁面,如註冊和登錄頁面和HTTP重新郵寄頁面。將HTTP重定向到MVC4 Mobile應用程序中的HTTPS
回答
我更喜歡你使用條件功能把類
public class RequireHttpsConditional : RequireHttpsAttribute
{
protected override void HandleNonHttpsRequest(AuthorizationContext filterContext)
{
var useSslConfig = ConfigurationManager.AppSettings["UseSSL"];
if (useSslConfig != null)
{
if (!string.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase))
{
throw new InvalidOperationException("The requested resource can only be accessed via SSL.");
}
var request = filterContext.HttpContext.Request;
string url = null;
int sslPort;
if (Int32.TryParse(useSslConfig, out sslPort) && sslPort > 0)
{
url = "https://" + request.Url.Host + request.RawUrl;
if (sslPort != 443)
{
var builder = new UriBuilder(url) { Port = sslPort };
url = builder.Uri.ToString();
}
}
if (sslPort != request.Url.Port)
{
filterContext.Result = new RedirectResult(url);
}
}
}
}
,並使用該[RequireHttpsConditional]
上述作用的結果。
我已經得到了這個代碼在互聯網上的某個地方,併爲我工作得很好。
在web.config中的AppSettings使用<add key="UseSSL" value="443" />
,並在上面,你需要把
[RequireHttpsConditional]
public ActionResult SignIn()
{
}
在IIS,你有你的項目點擊右鍵,然後單擊「編輯綁定」,那麼你的操作結果的控制器添加自定義類型https和端口號443(您可以更改它)
注意這隻適用於生產環境。當在本地執行它不會工作。
當你在本地執行它時,你有request.Url.Host
,它將只返回你localhost
並且缺少你的端口號。所以如果你在MVC中使用它,你會發現你的頁面的錯誤加載頁面,你把這個代碼。
所以這將工作時,你分配主機,而不是使用本地主機與特定的端口號。
乾淨的代碼。謝謝Saurabh –
在你希望成爲HTTPS下面的代碼添加到方法的頂部(當然你也可以簡單地將它添加到自己的方法,然後調用它)的控制器操作:
if (!HttpContext.Request.IsSecureConnection)
{
var url = new UriBuilder(HttpContext.Request.Url);
url.Scheme = "https";
Response.Redirect(url.Uri.AbsoluteUri);
}
它儘管您在整個網站上都保留HTTPS以防止針對auth cookie的MITM attack。
當我在我的控制器中使用此代碼時,我的視圖不顯示。 –
什麼顯示呢?你在Firebug(HTTP狀態碼)中得到什麼迴應? – SilverlightFox
它不顯示任何錯誤消息。只顯示前一頁。 –
- 1. TomEE重定向問題https到http到https - Web應用程序
- 2. 將HTTPS重定向到HTTP
- 3. 將HTTPS重定向到Apache中的HTTP
- 4. Azure的Web應用程序自動從HTTP重定向到HTTPS
- 5. 將http重定向到https(https將http重定向到默認值)
- 6. 重定向HTTP到HTTPS angularjs應用
- 7. 如何將HTTP重定向到MVC應用程序中的HTTPS(IIS7.5)
- 8. 使用Apache將HTTP重定向到HTTPS
- 9. 使用Node.js將http重定向到https
- 10. 在grails中將http重定向到https
- 11. 將http重定向到https並將www重定向到非www
- 12. 將單頁重定向到HTTPS,其餘的重定向到HTTP
- 13. 如何在openshift golang應用中將http重定向到https?
- 14. 重定向到HTTPS HTTP只
- 15. https到http重定向
- 16. apache http:重定向到https:
- 17. 重定向從http://到https://
- 18. HTTP到HTTPS重定向
- 19. HTTPS到HTTP重定向
- 20. HTTP到HTTPS重定向
- 21. 重定向HTTP到HTTPS
- 22. Sinatra + HTTPS重定向到HTTP?
- 23. HTTPS重定向到HTTP
- 24. HTTP到HTTPS重定向
- 25. HTTPS到HTTP重定向nginx
- 26. 重定向http頁到https
- 27. 嘗試將HTTP重定向到HTTPS(C#,IIS),但HTTPS在響應頭中回到HTTP - 重定向循環
- 28. Java響應從https重定向到http
- 29. HAProxy將http重定向到https(ssl)
- 30. 將網頁從HTTP重定向到HTTPS
[如何將HTTP重定向到MVC應用程序(IIS7.5)的HTTPS](http://stackoverflow.com/questions/4945883/how-to-redirect-http-to-https-of-mvc -application-iis7-5) – SilverlightFox
我想在我的網站中重定向一些頁面。不是所有的網頁或整個網站。 –