Как получить файлы cookie из другого домена с помощью php и javascript
Предположим, что у меня есть файл cookie, указанный в first.com. Теперь я хочу прочитать этот файл cookie на second.com через javascript и ajax. Но он не работает. У меня есть xmlHttp.status = 0.
пример кода
во втором домене readcookie.php file
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'];
}
Ответы
Ответ 1
Вы не можете читать файлы cookie из другого домена - конец.
Единственный способ, по которому я могу думать, - добавить код ко второму домену, который получает файлы cookie для вас, а затем разместить его на странице в 1-м домене в iframe.
Вам явно необходим полный доступ к обоим доменам, чтобы иметь возможность делать такие вещи.
Ответ 2
Ваша проблема в том, что браузеры не позволяют javascript получать доступ к другому домену. Добавить:
header('Content-type: text/html');
header('Access-Control-Allow-Origin: *');
в начало файла cookie.php, и это сработает.
Тем не менее, вы не получите cookie (или, по крайней мере, в Chrome). Я еще не мог понять, почему. Кажется, что chrome создает новый сеанс для javascript и не позволяет этому сеансу обращаться к предыдущим файлам cookie. Как HttpOnly.