網(LieHuo.Net)教程 有時候,為了網站的安全,我們希望用戶訪問網站某些頁面或者整個網站的時候,必須通過HTTPS的方式訪問,而不允許HTTP明文方式訪問,如何正確的配置網站和編寫程序以達到一個理想的效果呢?
有些網站開發人員,采用了只開放了HTTPS-443端口,而關閉HTTP-80端口的方式,這樣的話,雖然可以造成用戶的確無法用HTTP訪問網站了,但如果用戶通過HTTP訪問網站,譬如直接在地址欄輸入網址www.xxx.com,則系統缺省就采用了HTTP方式,這時用戶就會看到一個網站無法訪問的出錯信息,而絕大多數用戶都不具備專業的網站知識,他們不會認為是自己輸入不正確,而是認為網站出錯了。那如何妥善解決來自用戶HTTP的訪問請求呢?
正確的做法,應該是將用戶通過HTTP訪問網站的請求,重新定位到HTTPS請求上。首先,要將網站配置成HTTP和HTTPS都可以訪問的模式,確保80和443端口全部打開,然后在那些必須通過https訪問的頁面的頭部加入一個判斷語句,邏輯如下:
If 用戶是通過HTTP訪問本頁面
Then 用HTTPS方式重新訪問本頁面
以下用ASP和JSP代碼舉例:
asp代碼: If Request.ServerVariables("HTTPS")="off" Then response.redirect "https://www.myssl.cn" & Request.ServerVariables("PATH_INFO") response.end End If |
jsp代碼: String scheme=request.getScheme(); String url=request.getRequestURI(); if(!"HTTPS".equalsIgnoreCase(scheme)) { response.sendRedirect("https://www.myssl.cn"+url); return ; } |
對于必須通過HTTPS的頁面,只需加入以上語句,即使用戶是通過HTTP訪問的該頁面,系統也會自動將其轉變為HTTPS。