我一直在尝试使用以下方法设置第三方 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 内容类型 header 来说明 .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);
?>
最佳答案
您的问题完全基于 <img>
-你正在使用的标签。图像中不会执行任何 JavaScript 代码。
如果您通过 PHP 执行此操作,它之所以有效,是因为服务器在请求文件时正在预处理您的代码。虽然这可能不会向您显示任何内容,因为您没有提供任何有效的图像标题。
如果您要使用 <iframe>
-标记一切都会起作用,因为客户端可以读取和执行您的 JS 代码:
<iframe src='http://www.siteB.co.uk/cookie.php'></iframe>
但是如果您尝试通过 <img>
设置 cookie -tag 你需要用 server-side
来做本例中的 PHP 之类的语言。
像 Doubleclick 这样的机构使用 iframe、您应该插入到页面中的 javascript 片段或|以及服务器端解决方案。
希望这对您有所帮助。
关于javascript - 使用 1x1 <img> 标签设置第三方 cookie - Javascript 不会丢弃 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14415860/