【问题标题】:Python : Setting cookie into another websitePython:将cookie设置到另一个网站
【发布时间】:2015-02-23 00:11:57
【问题描述】:

我正在实施一个广告系统,当一个用户将脚本代码放入他们的网站 A 时,我当时想做的是在网站 A 中设置一个 cookie,同时显示响应或网站B(广告系统)的资源,所以在用户再次访问时,我可以记录它的条目。我已阅读 this question 并了解到当网站 A 显示来自另一个网站 B 的内容时,可以将 cookie 设置到其他网站 A 中

在脚本中,我正在执行一个休息 API 并返回一个响应,如下所示..

source_image = "http://example.com/media/format.png"
response = Response({'success':source_image})
response.set_cookie( 'cookie_name', 'cookie_value' )
return response

现在我可以在浏览器中看到该 url 响应的 cookie 设置。但是当我重新加载它时,cookie 没有得到显示。还有为什么它没有显示在我放置脚本代码的网站的 cookie 部分中。

我在设置 cookie 方面做得对吗?我试图将 cookie 的有效期设置为 1 天。但它仍然被破坏了..请帮助..

【问题讨论】:

    标签: javascript python django cookies


    【解决方案1】:

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

    1. 网站可以为自己的网站设置 cookie
    2. 网站无法为其他网站设置 cookie
    3. 可以在响应中设置 Cookie 或使用 JavaScript 等内容

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

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

    第三点对于广告等情况很重要,因为可以使用Set-Cookie 标头(或response.set_cookie in Django)或通过the document.cookie property 使用JavaScript 设置cookie。由于 JavaScript 可以使用 <script> 标记上的 src 属性从任何域包含,如果通过 JavaScript 包含任何域,则任何域都可以管理另一个域上的 cookie。这对于有多少分析服务 such as Google Analytics 工作很重要,因为它允许他们在每个网站上为每个被监控的用户存储 unqiue cookie,即使他们无法完全控制响应。他们通常还使用tracking beacons in the form of images 将数据发送回外部域并将其与存储的 cookie 相关联。

    answer you linked to 用图像讨论了这一点,但解释说它实际上并没有在另一个域上设置 cookie。使用图像或框架设置的cookie仅存储在外部域中,无法从包括远程图像的域访问。

    【讨论】:

      【解决方案2】:
      • 确保“Set-Cookie”的 HTTP 标头正在 HTTP 响应中传递给客户端。
      • 尝试为 cookie 添加“域”属性,以便浏览器知道将 cookie 发送到哪里。

      【讨论】:

      • 我试过这个 response.set_cookie( 'cookie_name', 'cookie_value',domain='my_domain_name' ,max_age=31556926)..你说的发送HTTP头是什么意思?
      • 我假设您正在尝试在浏览器中获取 cookie。如果是这种情况,则需要“Set-Cookie”的 HTTP 响应标头,以便在浏览器解析响应时使用它。如果是这种情况,数据包捕获应该在响应中显示类似“Set-Cookie”的内容。
      猜你喜欢
      • 2020-09-06
      • 1970-01-01
      • 2023-03-29
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多