【问题标题】:Cross domain cookie is not working跨域 cookie 不起作用
【发布时间】:2013-01-14 17:40:25
【问题描述】:

我正在尝试从 A.com 中的 B.com 读取 cookie

为了解决这个问题,我在 A.com 中添加了一个script tag,它从 B.com 加载。 这个 B.com 脚本是一个 PHP,它是我需要的 cookie 的回显。

B.com/script.php

<? echo 'var mycookie="'.$_COOKIE['myBdotComCookie'].";";?>

A.com 页面:

...
 <script src="http://B.com/script.php">
 ...

附加信息:myBdotComCookie 域是 B.com

问题

这在 iOS Chrome 上运行良好,但在 Linux 或 Win Chrome 上却不行。

问题

这种技术是错误的还是 iOS Chrome 有 bug 或者 Linux 和 Win Chrome 有 bug?

更新

在 FF 上也可以正常工作,但不能在 IE8/9 上工作

【问题讨论】:

  • 不确定这是否有帮助,但您是否尝试在 B.com/script.php 的顶部添加 header('Content-Type: application/javascript');?还要确保域始终完全匹配,即 B.com 与 www.B.com
  • 确保Block third-party cookies and site data Manage exceptions... 未在您的隐私设置中选中。
  • @apprentice thanx,我做了这些改变,但没有任何改变。
  • @AlienWebguy 魔法!该功能解决了我的问题,谢谢。现在,有什么方法可以在默认浏览器配置中获取这些数据? (我看到默认阻止第三方)
  • Safari 是第一个这样做的,它极大地影响了我们的广告投放工作。您可以使用同域代理并在服务器上使用 cURL 来获取您需要的内容并从公共域中放置 cookie。

标签: javascript cookies browser


【解决方案1】:

如今,越来越多的浏览器阻止了第三方 cookie。您不能再将它们真正用于任何需要可靠的事情。原因是第三方 cookie 可用于监视用户的浏览历史。您可以随时在浏览器隐私设置中禁用它们。大多数浏览器默认情况下不会这样做,但例如 Safari 会这样做。显然 Chrome 上的一些版本也是如此。

如果您需要从不同域的站点可靠地获取一些数据,您应该查看 jsonp 请求。它们由 jquery 抽象,因此您可以使用与 ajax 调用相同的 api 来执行它们。

【讨论】:

  • 谢谢,我现在正在尝试 jsonp,我会评论你的结果。
猜你喜欢
  • 2021-02-05
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多