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

时间:2013-01-19 15:32:02

标签: javascript cookies image party

我一直在尝试使用以下方法设置第三方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内容类型的标题来说.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 个答案:

答案 0 :(得分:2)

您的问题绝对基于您正在使用的<img>标记。不会在图像中执行JavaScript代码。

如果你通过PHP来实现它的原因是因为服务器在请求文件时预处理你的代码。虽然这可能不会显示任何内容,因为您没有提供任何有效的图像标题。

如果您使用<iframe> - 标签,一切都会有效,因为客户端可以读取并执行您的JS代码:

<iframe src='http://www.siteB.co.uk/cookie.php'></iframe>

但是,如果您尝试按<img> - 标记设置Cookie,则需要在此示例中使用PHP等server-side语言来执行此操作。

像Doubleclick这样的代理商使用iframe,您可以将javascript片段插入到您的页面或服务器端解决方案中。

希望这有帮助。