2010-10-27 23 views
3

我不希望嵌入我的webapp的開發人員能夠在URL中傳遞參數,如?style=dark,這會相應地改變CSS。有沒有更好的方式來保持此設置爲用戶導航比追加?style=dark所有鏈接?如何在頁面上保持url參數

我考慮過cookie等,但如果一個用戶正在查看兩個頁面,它們將我的應用程序嵌入到不同主題中,則會覆蓋另一個頁面。

我正在使用Python/Django。

+0

Cookie是域特定的。他們也可以包含一條路徑。 – 2010-10-27 01:57:27

+0

這可能會通過將我的webapp嵌入到iframe中的另一個站點中使用,因此cookie的域是我所有嵌入它的站點上的域。 – Jake 2010-10-27 01:59:55

+0

運行apache服務器?您可以使用MOD_REWRITE將(http://example.com/dark/page.html)更改爲(http://example.com/page.html?style=dark),這將使您的應用程序不必擔心跟蹤狀態。 – 2010-10-27 02:11:26

回答

2

如果你既不想使用cookies也不會話,不希望將其嵌入到URL中,唯一的替代品,其在我腦海中有:

首先最通用的:在前面用的虛擬域。使用h ** p://THEME.example.com/PATH而不是www.example.com。如果您擁有* .example.com的通配符SSL,那麼這甚至適用於HTTPS。

第二個變體是創建一個Basic-Auth-Handler,它使用主題作爲用戶名和虛擬密碼。然後,URL可以是這樣的:

^h ** P://[email protected]/PATH

但是我不知道,如果一個用戶連接到同一個站點有兩個不同的主題會發生什麼在基本認證情況下。如果搜索引擎位於身份驗證處理程序後面,則使網站可用也有點棘手。這是因爲您今天必須擁有身份驗證處理程序來規避現代瀏覽器中的反網絡釣魚防護。

請注意,對於這兩種方法,只能輕鬆使用一個參數。密碼不計算在內,並且有那些瀏覽器不支持PARAM1.PARAM2.example.com的通配符SSL證書* .example.com。

+1

我考慮使用子域,但不幸的是我確實想使用SSL併爲10個特定子域創建證書,而不是通配符。 我還沒有測試過,但我相當確定基本身份驗證會遇到與會話相同的問題。我想我只需要確保獲得參數被添加到所有鏈接。我將編寫一個Django模板標籤來提供幫助。 – Jake 2010-10-29 21:15:14

+0

通配符域不是更昂貴,你可以得到他們每2年少於50美元(不幸的是,這些證書不適用於Android)。我不想做廣告,所以你必須自己找到它。 – Tino 2010-10-30 02:14:55

0

我不完全確定,但無論如何,你將不得不通過這個變量到您的網站。我的意思是說,如果您將?style=dark添加到您的的href的或rel="dark"到您的<a>以便與javascript一起使用,則沒有區別。 記住,這只是一個例子

Ofcourse,你可以隨時對AI工作,以預測用戶希望在特定時刻是什麼。 hehe

+0

GET參數像?style = dark發送到服務器,但rel屬性不是,所以使用GET params更好,我只是想避免將它們追加到所有鏈接。 – Jake 2010-10-29 21:18:08

+0

對於'rel',我的意思是說javascript會發送這個變量。 – jolt 2010-10-31 11:10:26

0

我確定你可以使用Session來處理這種事情,而不是?第一次通過查詢字符串提供值時,將它們添加到會話中,然後在會話中從會話中檢索它們。

+0

如果用戶訪問其中的問題。com嵌入我的應用程序style = dark,然後在使用style = light的新選項卡中打開two.com。使用one.com切換回標籤並點擊我的應用程序中的鏈接將改變風格。 – Jake 2010-10-29 21:09:05

+0

將值添加到會話中,包括查詢字符串提供的「密鑰」。因此,在訪問one.com時,查詢字符串會進入您的應用程序,並且鍵值爲X,因此值會存儲爲X.然後,two.com會輸入您的應用程序,鍵值爲Y,因此值將存儲在Y中,位於同一個會話對象中(它是相同的瀏覽器/用戶)。然後,將該鍵添加到您製作的每個鏈接中,因此,在標籤中導航時,查詢字符串將定義要使用的會話值。該鍵標識會話對象中的值集。這樣您可以將多個值集存儲在一個會話對象中。 – Bazzz 2010-10-30 07:45:45

+0

我認爲你最初的問題在於你不想在你的查詢字符串中存儲大量的值,比如「?style = dark&color = green&backcolor = blue&size = large」等。但是存儲一個「key」對我來說似乎是可行的「one .com?key = 1234567「或其他。這是一個例子。在session = create new value-set中不存在鍵。鍵確實存在於session = load value-set – Bazzz 2010-10-30 07:49:24

相關問題