4

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

站点A

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

站点B

<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);

?>
4

1 回答 1

3

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

如果您通过 PHP 执行此操作,它之所以有效,是因为服务器在请求文件时正在预处理您的代码。尽管这可能不会向您显示任何内容,因为您没有提供任何有效的图像标题。

如果您使用<iframe>-tag 一切都会正常工作,因为客户端可以读取和执行您的 JS 代码:

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

但是,如果您尝试通过<img>-tag 设置 cookie,则需要server-side在此示例中使用 PHP 之类的语言进行设置。

Doubleclick 等机构使用 iframe、您可以插入页面的 javascript 片段或|和服务器端解决方案。

希望这可以帮助。

于 2013-01-19T19:23:50.237 回答