2012-11-23 126 views
0

我目前正在爲多個網站編寫自定義cookie法解決方案。我試圖儘可能多地將解決方案/插件作爲「全方位解決方案」,並將代碼作爲腳本的第一位加入。目前我已經幾乎完成了所有工作,而且看起來都非常漂亮,我希望給用戶「接受」或「拒絕」的能力,拒絕將他們重定向但仍然允許他們使用該網站。Cookie法,Cookie setter和getter

到目前爲止,我已經爲接受和拒絕設置了正確的cookie,它在基於那裏選擇接受或拒絕的cookie中設置true或false值。

我想使用我已經發現的代碼來重新定義cookie setter和getter,在if語句中防止cookie被設置,如果用戶沒有給出權限或未選擇答案。

document.__defineGetter__("cookie", function() { return '';}); 
document.__defineSetter__("cookie", function() {}); 

到目前爲止,我有這樣的代碼來檢查用戶是否允許的Cookie,

if(checkCookie != true){ 
    // Run code to redefine cookie setter getter to prevent cookies from being set 
}else{ 
    // Don't do anything and the cookies should be run as usual. 
}; 

有人能賜教或點我就如何使用cookie的setter和getter做正確的方向正如我所解釋的那樣?

+1

您應該知道服務器通常通過響應HTTP標頭設置cookie。當這種情況發生時,不會調用Javascript,因爲cookie甚至在頁面開始被解析之前設置。所以你可能只能攔截通過javascript設置的cookie。雖然您可以閱讀以前設置的任何cookie,但您將無法阻止它們被設置。 –

+0

是的,我不需要攔截由PHP設置的cookie,因爲我有另一個解決方案,我只想攔截由JavaScript設置的那些,我計劃在很多html只有網站上實現這個插件,所以PHP cookies不會是一個問題,我的PHP解決方案正在爲其他PHP站點工作。 – Sam

回答

0

作爲亞歷克斯韋恩表示,作爲您的問題的評論,Cookie甚至在您看到<html>標記進入您的瀏覽器之前設置。

HTTP是這樣的:

HTTP/1.1 200 OK 
Server: Nginx 
Content-Length: x (size of the following content) 
Content-Type: text/html (this is what identifies it as html) 
Set-Cookie: foo=bar; expires=Tue, 4-Dec-2012 19:30:42 GMT; Max-Age=2592000; Path=/; Version="1" 

<!DOCTYPE html> 
<html> 
... 

你可以做什麼,必須做執行這樣的操作是設置,告訴服務器不把任何cookie「不跟蹤我」會話cookie到服務的請求。

另一種方法可能是在地址欄中有一個get變量,告訴服務器不要設置跟蹤cookie。

這是什麼餅乾實際上。

+0

「之前你甚至看到標籤進入你的瀏覽器」之前設置了「cookies」。那麼設置這些cookie的前提是是否是Apache爲它設置的cookie?我不明白你在說什麼之前在之前沒有代碼:/ – Sam

+0

@Sam:我編輯了我的問題,以便你可以看到服務器是如何響應的。 – GottZ

+0

您之前說過:<!DOCTYPE html PUBLIC「 - // W3C // DTD XHTML 1.0 Transitional // EN」「http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd」> ????? – Sam