0

我正在尝试通过放置在域 B 中的内联 JavaScript 代码从域 B 读取域 A 设置的 cookie(我知道 cookie 的名称)。

域 B 内联 javascript 代码:

<script type="text/javascript">
        /* * * DON'T EDIT BELOW THIS LINE * * */
        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = 'http://domainA.com/classifiead/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();

    </script>

http://domainA.com/classifiead/embed.js包含:

     $("#jsonpbtn2").click(function() {

   var url = 'http://domainA.com/classifiead/content2.php?callback=?'; 
  //  var id = info;
   $.getJSON(url, null, function(data) {
                 $('#textDiv').append(data.somecookie);
     });
});

http://domainA.com/classifiead/content2.php包含:

<?php 
 header('Content-type: application/json');
 header('Access-Control-Allow-Origin: *');
 header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
 header("Access-Control-Allow-Credentials: true");
 header("Access-Control-Allow-Headers: Content-Type, *");
 header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');

 $rtnjsonobj->id = 'test skdfbslkdj';
 $rtnjsonobj->somecookie =$_COOKIE['thisweb_last_75'];
echo $_GET['callback']. '('. json_encode($rtnjsonobj) . ')';  

?>

这甚至可能吗?

4

1 回答 1

1

是的,如果您有代码在域 A 上执行服务器端。当您的 JavaScript 代码从域 A 接收到 cookie 时,您可以将 cookie 发送到域 B。

如果 cookie 是安全 cookie 或 httponly,您只能通过服务器端脚本读取它。

我建议您阅读以下内容: http ://en.wikipedia.org/wiki/HTTP_cookie#Cross-site_scripting_.E2.80.93_cookie_theft

请注意:在您的示例中,您应该在分配属性之前创建对象。例如:

$rtnjsonobj = new stdClass();
$rtnjsonobj->id = 'test skdfbslkdj';
$rtnjsonobj->somecookie =$_COOKIE['thisweb_last_75'];
于 2012-12-11T09:32:38.047 回答