【问题标题】:Setting Session/Cookie via ajax request made on other website通过在其他网站上发出的 ajax 请求设置 Session/Cookie
【发布时间】:2011-06-18 13:22:30
【问题描述】:

那是我的问题:我有一个网站 example.com,其中 index.html 文件 a 引入了 <script src="website.net/js.js"></script> 您可以看到,这是在其他 Web 服务器上。 在js.js 中,我有一些数据要发送到 php。为此,我正在使用 Ajax。因此,我使用 get 方法向"website.net/data.php" 发出请求。在data.php 文件中一切正常,我收到了值,但我想设置一个cookie,该值是我通过ajax 收到的值。这是问题所在。 setcookie 函数说设置了cookie,但是当我在浏览器中查看时,没有cookie!

如果我使用<script src="website.net/js.js"></script> 的 index.html 文件托管在我发出请求的同一个域上,它就可以正常工作。如果它在另一个域上,它就不再起作用了。

我已经阅读了有关 Ajax 跨站点的一些内容,但我不想将某些内容发送回 example.com。我想要的只是将一些数据从 example.com 发送到 website.net,然后根据该值设置一个 cookie。

从 example.net 我取一个值。在 website.net 上,我收到该值,我检查它是否还没有设置 cookie,如果不是,我设置它。在同一页面 website.net 上,我也使用了这个 cookie。

【问题讨论】:

    标签: php ajax session cookies


    【解决方案1】:

    您在哪里检查 cookie 是否已设置?在example.com 域上还是在website.net 域上?

    如果您尝试使用 example.com 访问 cookie,则根本无法使用其他域的 cookie 写入/访问或执行任何操作。这是出于安全原因。如果可以,其他所有网站都可以访问您的 cookie 并轻松窃取您的身份。

    【讨论】:

    • 这意味着通过 JavaScript,您只能访问 example.com 域的 cookie(因为您正在从那里运行 JS),而您可以访问 website.net 的 cookie(仅)服务器(通过您的服务器端 php 脚本)。
    • 在 website.net 上。在这个域上,我检查它、设置它并使用它。
    【解决方案2】:

    尝试在 iframe 中设置 cookie。我不确定您是否真的可以使用 JavaScript 为 website.net 设置 cookie,因为 js.js 是从该域加载的。

    【讨论】:

      【解决方案3】:

      非常感谢! 我找到了另一种使用基本javascript和<img />标签将数据发送到没有ajax的php文件的方法

      例如: example.com 在索引中有:

      <script type="text/javscript" src="http://website.net/js.js"></script>

      在我的 js.js 文件中

      var important_data = 123; // 
      
      var src = "http://website.net/process.php?important_data=" + important_data;
      document.write('<img src="' + src + '"/> ');
      

      现在,每次我加载 example.com 时,它都会将重要数据发送到 website.net。我试图在process.php 文件中设置一个cookie,它成功了!我在 localhost 上测试了这个想法(两个“网站”都在我的本地服务器中),但它也应该在 2 个不同的域之间工作。我会尝试看看它是否适用于 2 个不同的网站。之后,我会回来分享结果。

      谢谢!

      后期编辑: 我检查了是否可以使用该方法设置 cookie,并且它有效! 效果很好! website.net 的 cookie 未针对该域设置,而是针对 example.com 设置的。正是我想要的!

      【讨论】:

        猜你喜欢
        • 2012-10-11
        • 2020-06-18
        • 2012-12-22
        • 1970-01-01
        • 2012-04-26
        • 2013-11-03
        • 1970-01-01
        • 2013-03-31
        • 2014-02-08
        相关资源
        最近更新 更多