2011-05-26 50 views
1

我可以,直通代碼(JavaScript)的自動導航到一個網站,並有我的隱藏證書讓我沒有問題(和小甜餅)餅乾和重定向

然而,對下一行代碼時,我嘗試重定向使用(window.open)它不能識別我已經得到了cookie,然後提示我輸入憑據。有任何想法嗎?

... 
    <form name="MyForm" action="#" method="post"> 
     <input type="hidden" name="blah" value="blah" /> 
     <input type="hidden" name="blah" value="blah" /> 
    </form> 
</div> 
+0

最後一部分Q是指什麼? – Neal 2011-05-26 17:18:13

回答

1

使用JavaScript,我們可以在瀏覽器窗口之間進行通信,因爲我們有對每個窗口的引用。當一個新窗口被創建時,JavaScript方法window.open()會返回對新窗口的引用。子窗口還具有對通過window.opener窗口對象創建它的父窗口的引用。這些引用允許兩個窗口彼此進行通信和操作。

爲了演示如何在cookie之間進行通信,我們假設我們想打開一個窗口,幾秒鐘後關閉它。 view plainprint?

1. var win = window.open('child.html'); 
2. setTimeout(function() { win.close(); }, 5000); 

var win = window.open('child.html'); 
setTimeout(function() { win.close(); }, 5000); 

該代碼將打開一個子窗口,並在5秒後使用對子窗口的引用和方法close()關閉它。但是,如果由於某種原因我們沒有參考,我們將無法調用close方法。因此,讓我們看看如何使用cookie來完成: view plainprint?

1. window.open('child.html'); 
2. setTimeout(function() { setCookie('child', 'close'); }, 5000); 

window.open('child.html'); 
setTimeout(function() { setCookie('child', 'close'); }, 5000); 

這裏我們打開一個窗口,但不保存參考。然後,在5秒鐘後,我們將'close'寫入名爲'child'的cookie(使用僞setCookie()函數)。這本身並沒有做任何事情,但如果子窗口期望cookie,它可以在讀取「關閉」時關閉。讓我們假設下面的JS在child.html中。 view plainprint?

1. // child.html 
2. setInterval(function() { getCookie('child') == 'close' ? this.close() : ''; }, 500); 

// child.html 
setInterval(function() { getCookie('child') == 'close' ? this.close() : ''; }, 500); 

這會每半秒檢查一次cookie,如果cookie讀取'close',關閉窗口。

使用這種方法,我們可以發送任何命令到任何打開的窗口,讓他們執行它,而無需引用該窗口。

1

你的餅乾是他們在創建了子域敏感的 - 即:如果一個cookie已domainname.com被創建,那麼你重定向到www.domianname.com,它不會在那裏工作。

換言之,對於重定向,請始終使用相關網址。