通过使用1x1 <img>标签设置第三方cookie - Javascript不会丢弃cookie

4

我一直在尝试使用以下方法设置第三方Cookie:

站点A

<img src="http://www.siteB.co.uk/cookie.php" />

SiteB
<script>

    document.cookie = "name=thirdpartytest; expires=07/07/2013; path=/;domain=SiteB.co.uk";

</script>

当我直接访问SiteB/cookie.php时,cookie会如预期般被创建。但是访问SiteA并不会创建任何cookie。

当我使用同样的方法,但使用 PHP 来创建 cookie 时,它可以成功工作。这是否意味着 JavaScript 在这种情况下无法创建 cookie?我想可能是因为没有发送 HTTP content-type headers 来指示 .php 页面是图像。但是似乎在 PHP 版本中不需要这个头部信息即可使代码工作。

有什么想法可以使用 JS 让它起作用吗?这是否可能?例如 Doubleclick 是如何实现的?

供参考:这是成功创建 cookie 的 PHP 代码:

<?php 
$CookieName = "my3Pcookie";    // Cookie's name
$CookieValue = "hello, there"; // Cookie's value
$CookieDirectory = "/";        // Cookie directory ("/" for all directories)
$DaysCookieShallLast = 31;     // Days before expiration (decimal number okay.)


$lasting = ($DaysCookieShallLast<=0) ? "" : time()+($DaysCookieShallLast*24*60*60);
setcookie($CookieName,$CookieValue,$lasting,$CookieDirectory);

?>
1个回答

3
你的问题肯定是基于你正在使用的 <img> 标签。在图像中不会执行任何 JavaScript 代码。
如果您通过 PHP 进行,那么它能正常工作的原因是因为服务器在请求文件时预处理了您的代码。尽管这可能不会显示任何内容,因为您没有提供任何有效的图像标头。
如果您使用 <iframe> 标签,则一切都将正常工作,因为客户端可以读取和执行您的 JS 代码:
<iframe src='http://www.siteB.co.uk/cookie.php'></iframe>

但是如果你尝试使用<img>标签设置cookie,你需要使用像PHP这样的服务器端语言来完成,例如:

像Doubleclick这样的机构使用iframe、javascript代码片段以及服务器端解决方案。

希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接