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

Paw*_*wan 6 javascript python django cookies

我正在实施一个广告系统,当一个用户将脚本代码放入他们的网站时A.当时我想做的是在网站A中设置一个cookie,同时显示网站B(广告系统)的响应或资源,所以在用户再来的今天,我可以记录它的条目.我已经读过这个问题并且知道当该网站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
Run Code Online (Sandbox Code Playgroud)

现在我能够在浏览器中看到此URL的响应中设置的cookie.但是当我重新加载它时,cookie无法显示.也就是为什么它没有显示在我放下脚本代码的网站的cookies部分.

我是否正确设置cookie?我试图设置cookie的有效期为1天.但它仍然被摧毁..请帮助..

Kev*_*own 1

关于 cookie 和浏览器以及它们如何跨域交互,需要了解一些重要的事情。

  1. 网站可以为自己的网站设置cookie
  2. 网站无法为其他网站设置 cookie
  3. 可以在响应上设置 Cookie,也可以使用 JavaScript 等方式设置

前两者可能看起来令人困惑,特别是当一些消息来源说它们是可能的时。需要注意的是,它们仅影响响应使用Set-Cookie标头直接设置 cookie 的情况,这允许网站直接设置 cookie。对于子域之类的东西有一些特殊情况,但一般来说,您不应该期望浏览器尊重您无法控制的其他域上设置的 cookie。

如果您被允许在其他网站上任意设置 cookie,这将为网站任意设置和取消设置您正在使用的 cookie 打开大门,即使它们不相关。这将包括仅通过响应就跨域将某人注销的能力,这是不可能的。

第三点对于广告等情况很重要,因为可以使用Set-Cookie标头(或response.set_cookie在 Django 中)或通过属性使用 JavaScript设置document.cookiecookie。由于 JavaScript 可以使用标签src上的属性从任何域包含<script>,因此任何域都可以管理另一个域上的 cookie(如果它是通过 JavaScript 包含的)。这对于许多分析服务(例如 Google Analytics)的工作非常重要,因为它允许它们在每个受监控用户的每个网站上存储独特的 cookie,即使它们无法完全控制响应。他们通常还使用图像形式的跟踪信标将数据发送回外部域并将其与存储的 cookie 相关联。

您链接到的答案讨论了图像的问题,但解释说它实际上并未在另一个域上设置 cookie。使用图像或框架设置的cookie仅存储在外部域中,并且不能从包括远程图像的域访问。