2014-09-25 46 views
1

我有一些cookie問題,正在嘗試排除故障。我在另一個網站上的javascript,它檢查cookies的域是什麼?

所以......

我有,我把其他的網站域名

<script type="text/javascript" src="http://siteA.com/script.php"></script> 

腳本可以說我在http://siteA.com/script.php把這個腳本在站點B

我有它檢查是否有使用此代碼的cookie

function getCookie(cname) { 
    var name = cname + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0; i<ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1); 
     if (c.indexOf(name) != -1) return c.substring(name.length, c.length); 
    } 
    return ""; 
} 

function checkCookie() { 
    var id = getCookie("mycookiename"); 
    if (id == "1234") { 
     redirect() 
    } else { 

     something() 

    } 
} 

所以我的問題是,這是javascri pt檢查siteA或siteB上的cookie?

+0

siteA的PHP(服務器)將收到siteA的cookies。 JavaScript將訪問它所運行的頁面的cookies,在你的例子中是siteB – Bergi 2014-09-25 19:30:38

回答

1

(客戶端)的JavaScript代碼(網頁上的)總是執行它裝入文件的範圍內,所以將有機會獲得屬於文檔的cookie。

您可以使用服務器端代碼(用您喜歡的任何語言編寫)來生成JavaScript,並且服務器端代碼可以訪問用於託管JS的URI的Cookie(並且可以將數據注入到JavaScript文件中)。 (這通常不是一個好主意)。

+0

爲什麼「通常不是一個好主意」? IIRC這是認證適用於JSONP的方式:-) – Bergi 2014-09-25 19:32:39

+0

@Bergi - 因爲*通常*您希望腳本可以輕鬆地緩存靜態資源。 JSONP是在不支持CORS的瀏覽器中使用JS作爲數據序列化格式的一種手段。 – Quentin 2014-09-25 19:34:24

0

它會檢查siteB的cookie(運行代碼的頁面)。如果它不會導致安全問題。 CDN庫也不行,因爲它們會檢查CDN域中的Cookie,而不是您真正想檢查的域。

相關問題