2011-04-16 29 views
0

我向一个PHP脚本发送了一个Ajax请求,我使用setcookie来设置外部域的cookie。之后,我发送另一个Ajax请求到外部域来读取cookie。我无法取得成果。我正在使用jQuery发送Ajax请求。通过ajax设置和检索外部cookie

PHP脚本:

<?php 
// yummy cookies ? 

header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN']); 
header("Access-Control-Allow-Credentials: true"); 

if($_GET['read'] == true) { 
    echo json_encode(
     array(
      'user_id' => $_COOKIE['user_id'], 
      'twitter_name' => $_COOKIE['twitter_name'], 
      'facebook_id' => $_COOKIE['facebook_id'] 
     ) 
    ); 
} 

if($_GET['write'] == true) { 
    if($_GET['type'] == 'twitter') { 
     setcookie('twitter_name', $_GET['twitter_name'], time() + 1209600); 
     setcookie('user_id', $_GET['user_id'], time() + 1209600); 
    } 

    if($_GET['type'] == 'facebook') { 
     setcookie('facebook_id', $_GET['facebook_id'], time() + 1209600); 
     setcookie('user_id', $_GET['user_id'], time() + 1209600); 
    } 
} 

回答

0

您可能正在运行到问题,在AJAX不允许跨站点调用(不能调用到另一个域)。

大多数人使用iframe而不是ajax,将src放到其他站点的cookie脚本中。

iframe看起来像<iframe src="otherdomain.com/cookiecode.php?var1=something" style="visibility:hidden;display:none"></iframe>

+0

您能详细说明iframe过程吗? :) – Haris 2011-04-16 07:02:54

+0

真的很简单,只需构建一个iframe,从要存储cookie的站点(即使在url中传递变量)中显示一个空白页面(隐藏在您的页面中)。 iframe被加载,存储来自其他域的cookie,我将在帖子中添加一个示例。 – Ben 2011-04-16 07:34:46