Python:将cookie设置到另一个网站

时间:2014-12-25 04:49:13

标签: javascript python django cookies

我正在实施一个广告系统,其中当一个用户将脚本代码放入他们的网站时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天。但它仍然被摧毁..请帮助..

2 个答案:

答案 0 :(得分:1)

有一些关于Cookie和浏览器以及它们如何跨域互动的重要事项。

  1. 网站可以为自己的网站设置的Cookie
  2. 网站无法为其他网站设置Cookie
  3. 可以在回复中设置Cookie,也可以使用JavaScript
  4. 等内容设置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)

  • 确保&#34; Set-Cookie&#34;的HTTP标头正在通过HTTP响应传递给客户端。
  • 尝试添加&#34;域&#34; cookie的属性,以便浏览器知道cookie的发送位置。