簡體   English   中英

如何使用php和javascript從不同的域獲取cookie

[英]how to get cookies from a different domain with php and javascript

假設我在first.com中設置了一個cookie設置用戶。 現在我想通過javascript和ajax在second.com中讀取該cookie。 但它沒有用。我有xmlHttp.status = 0。

示例代碼

在第二個域readcookie.php文件中

var xmlHttp;
    function createXMLHttpRequest(){
        if(window.ActiveXObject)
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        if(window.XMLHttpRequest)
            xmlHttp=new XMLHttpRequest();
    }
    function readcookie(){

        createXMLHttpRequest(); 
        xmlHttp.open("GET","http://www.first.com/cookie.php",true);
        xmlHttp.onreadystatechange=getcookie;
        xmlHttp.send(null);
    }
    function getcookie(){
        if(xmlHttp.readyState==4){
            if(xmlHttp.status==200){
                var reply=xmlHttp.responseText;
                if(reply){
                    alert(reply);
                }
            }
            else
                alert(xmlHttp.status);
        }
    }

在第一個域cookie.php文件中

if(isset($_COOKIE['user'])){
        echo $_COOKIE['user'];
    }
    else{
        setcookie('user','a2345',0);
        echo $_COOKIE['user'];
    }

您無法從其他域讀取Cookie - 結束。

我能想到的唯一方法是在第二個域中添加一些代碼,為您獲取cookie,然后將其放在第一個域的頁面中,在iframe中。

您顯然需要完全訪問這兩個域才能執行此類操作。

您的問題是瀏覽器不會讓javascript訪問不同的域。 加:

header('Content-type: text/html');    
header('Access-Control-Allow-Origin: *');   

行到cookie.php的開頭,它會工作。 不過,你不會得到cookie(或者至少在Chrome中)。 我還不知道為什么。 似乎chrome為javascript創建了一個新會話,並且不會讓該會話訪問以前的cookie。 像HttpOnly一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM