2012-05-08 64 views
2

我使用c:url來生成相對於上下文路徑的我的url。 但是所有的網址將被HTTPS如果安全網頁或HTTP在不安全的網頁。 我已經設置了我的服務器,以便即使我訪問例如具有http的登錄頁面,它也會重定向到https,但在登錄頁面中,我使用的所有相關URL都將是https。JSTL/JSP生成url並強制HTTP/HTTPS

我想例如有主頁鏈接爲http,以便它不會執行https請求,然後做另一個重定向到http!

是有辦法迫使固定(HTTPS)不安全(HTTP)在JSP生成URL時?

在此先感謝...

回答

2

我找到對付這種最簡單的方法是使用下面的一個:

http://${pageContext.request.serverName}<c:url value="/my/path"/> 

https://${pageContext.request.serverName}<c:url value="/my/path"/> 

例如(在你的JSP):

You can 
<a href="https://${pageContext.request.serverName}<c:url value='/reset-password.jsp'/>">reset your password</a> 
if you like. 
+1

或'//${pageContext.request.serverName}' –

+0

這會不會使用當前的協議頁面,不管它是什麼? OP希望將協議強制爲http或https。 – Djizeus

+0

採取了點,抱歉的混亂。 –

0

如果你看一下從C生成的HTML:URL,你會看到他們像 這不告訴你從哪個主機或什麼協議這個資源會,但您的瀏覽器將採用與您所在頁面相同的主機和協議。

如果您的網頁上http://example.com/mysite,你要鏈接到子頁面上https://secure.example.com/mysite,那麼這被看作是當前的web應用程序之外的鏈接(即使該鏈接後面的代碼最終會由相同的Web應用程序進行處理)。像對待鏈接到其他外部網站那樣對待它們。