2011-09-22 59 views
0

我想導入用戶在網站上輸入的數據,我不控制。我不希望用戶把他的登錄憑據遞給我,從服務器端獲取數據(直接連接到上述網站)。我寧願將登錄數據留在客戶機器上:它使我的服務更加值得信賴,而且我不必處理敏感數據。登錄後從網站獲取數據,客戶端

我認爲這可能可以用JavaScript來完成,沒有更大的麻煩。 但是,考慮到安全風險,它似乎被瀏覽器阻止。請參閱How to get data with JavaScript from another server?

所以我認爲我的問題已經回答,可以關閉/刪除。

+0

可能重複的[如何從另一臺服務器獲取JavaScript數據?](http://stackoverflow.com/questions/578095/how-to-get-data-with-javascript-from-another-server) – ypnos

回答

1

我不確定我是否理解您要做什麼,但是沒有安全的方式來驗證瀏覽器客戶端中的登錄憑據。如果你想檢查登錄憑證,你將不得不涉及一臺服務器。

某些數據可以存儲在客戶端,但是然後用戶被綁定到特定計算機上的特定瀏覽器,並且不能從其他地方使用該服務。在較舊的瀏覽器中,數據通常僅限於可以存儲在cookie中的數據,並且Cookie不保證能夠在任何特定的持續時間範圍內存活。在最新的瀏覽器中,數據可以存儲在HTML5 local storage中,這允許更加結構化的存儲數據的方式,但即使這樣,您仍然被困在一臺特定計算機上的特定瀏覽器中。

根據您的意見,這聽起來是您試圖「緩存」來自網站A的數據副本,您可以從網站B上的多個訪問中的客戶端代碼訪問您的網站。如果是這樣的話,那麼聽起來像HTML5本地存儲可能會用作緩存存儲機制。您必須弄清楚如何從網站A獲取數據到緩存中,因爲緩存將受到同源訪問(域X只能訪問由域X放入HTML5本地存儲的數據),但如果您可以設法從網站A獲取數據到您的網站B客戶端頁面(可能使用JSONP),那麼您可以使用HTML5本地存儲緩存它。您需要認識到,即使HTML5本地存儲也不會永久保存(因此,如果需要,您需要能夠從網站A再次獲取它)。

+0

有用戶可以登錄的網站A.我不擁有網站A.我擁有網站B,並希望獲得A上可用的數據,但只對用戶可見。因此,用戶可以在那裏登錄,A將檢查她的憑證,然後數據可供用戶使用,並可以發送給我(B)。 – ypnos

+0

根據您的澄清,我在回答中添加了更多評論。 – jfriend00

+0

謝謝。我想我沒有找到一種方法來訪問其他域的本地存儲.. – ypnos

1

你說的這個

我不希望用戶遞給我他的登錄憑證抓住從服務器端的數據 (直接連接到上述 網站)。

如果這樣做,任何人都可以訪問任何用戶的數據,因爲您不限制對數據的訪問。

也表示,這

我寧願登錄數據留在客戶機上: 這讓我的服務更值得信賴,我沒有處理 敏感數據。

我真的不確定這是個好主意。您仍然需要鎖定個人信息。但無論如何,如果你真的想,你可以使用本地存儲 - 現代webbrowsers支持這一點。

查看本鏈接瞭解本地存儲的入門知識。 Storing Objects in HTML5 localStorage

請注意,用戶可以清除瀏覽器本地存儲,因此您仍然需要有一個表單來輸入憑據。

編輯 - 如果您想要在客戶端上保存用戶的配置文件信息,可以使用本地存儲。但您仍然需要將數據保存到服務器,否則,如果用戶轉到其他機器甚至瀏覽器,他們將不會有他們的數據。此外,您的服務器端模型可能需要以某種方式將用戶的內容與其個人資料相關聯。我不認爲有任何解決辦法。

+0

我想你不明白我的問題。也許我應該重新制定它。 – ypnos

+0

是的,你應該。 – hvgotcodes