我正在实施一个广告系统,其中当一个用户将脚本代码放入他们的网站时A.我当时想要做的是在网站A中设置一个cookie,同时显示响应或者网站B(广告系统)的资源,所以在用户再来的今天,我可以登录它的条目。我已经读了this question并且知道当网站A显示来自其他网站B的内容时,可以将cookie设置到其他网站A
在脚本中,我正在执行一个rest API并返回一个响应,如下所示..
source_image = "http://example.com/media/format.png"
response = Response({'success':source_image})
response.set_cookie( 'cookie_name', 'cookie_value' )
return response
现在我可以在浏览器中看到此网址响应中设置的cookie。但是当我重新加载它时,cookie无法显示。也就是为什么它没有显示在我放下脚本代码的网站的cookies部分。
我是否正确设置Cookie?我试图设置cookie的有效期为1天。但它仍然被摧毁..请帮助..
答案 0 :(得分:1)
有一些关于Cookie和浏览器以及它们如何跨域互动的重要事项。
前两个可能看起来令人困惑,特别是当一些消息来源说它们是可能的时候。重要的是要注意,它们仅影响响应直接使用Set-Cookie
标头设置cookie的情况,这允许网站直接设置cookie。对于子域名这样的事情有一些特殊情况,但一般情况下,您不应期望浏览器尊重您无法控制的其他域上设置的Cookie。
如果您被允许在其他网站上任意设置cookie,这将为网站任意设置和取消设置您使用的cookie打开大门,即使它们是无关的。这将包括仅在响应中跨域记录某人的能力,这是不可能的。
第三点对广告等情况很重要,因为可以使用Set-Cookie
标题(或response.set_cookie
in Django)或使用JavaScript the document.cookie
property设置Cookie。由于JavaScript可以使用src
标记上的<script>
属性从任何域中包含,任何域都可以管理其他域上的Cookie(如果它包含在JavaScript中)。这对于有多少分析服务such as Google Analytics很重要,因为它允许它们为每个正在监控的用户在每个网站上存储unqiue cookie,即使他们没有完全控制响应。他们通常还使用tracking beacons in the form of images将数据发送回外部域并将其与存储的cookie相关联。
answer you linked to与图片讨论了此问题,但解释说实际上并未在其他域上设置Cookie 。使用图像或帧设置的cookie仅存储在外部域中,不能从包括远程图像的域访问。
答案 1 :(得分:0)