首页 > 解决方案 > 在 youtube-nocookie.com 域中使用 YouTube IFrame Player API 脚本时禁用 cookie

问题描述

在将 YouTube IFrame Player API 与从www.youtube-nocookie.com域播放的隐私增强模式视频一起使用时,如何禁用在 youtube.com 上设置的 cookie ?

https://support.google.com/youtube/answer/171780?hl=en的“打开隐私增强模式”部分,它建议使用www.youtube-nocookie.com域:

在不使用跟踪观看行为的 cookie 的情况下嵌入 YouTube 视频。

这很好用,并且不会按预期设置 cookie。

但是,我们使用设置 cookie的 IFrame Player API(带有enablejsapi=1嵌入参数) 。我们看到在 .youtube.com 域上设置了以下 cookie:

这些从https://www.youtube.com/iframe_api的 iframe Player API 脚本中设置为 HTTP cookie (打开 Chrome 隐身窗口并直接查看该脚本 URL 并检查 cookie,您将看到上面的 2 个 cookie 集)。我不确定这些 cookie 到底是什么,但它们看起来很像跟踪 cookie。

因此,这些设置是在用户与视频交互或采取任何同意操作之前设置的,这意味着我们不能使用 IFrame Player API,同时在涉及欧盟 cookie 指令时仍符合 GDPR。

所以问题是,我们如何在不设置 cookie 的情况下使用 IFrame Player API?

注意:我已经用标签youtube-iframe-api发布了这个,希望谷歌能回答这个问题:

我们支持 Stack Overflow 上的 YouTube IFrame API。Google 工程师使用 youtube-iframe-api 标签监控和回答问题。

(来自https://developers.google.com/youtube/players/support

标签: cookiesyoutubeyoutube-iframe-api

解决方案


我有一个类似的问题,并决定尝试使用这个脚本。然而,到目前为止,他们的文档似乎并不清楚如何在没有任何 cookie 的情况下实现这一目标。只需将https://www.youtube.com/iframe_api替换为https://www.youtube-nocookie.com/iframe_api 就会导致 404 错误。

基于,我尝试了以下方法。此代码以编程方式创建视频播放器并将https://www.youtube-nocookie.com设置为主机。它确实加载了视频,如果您检查它,您会看到最初没有创建任何 cookie;但如果您开始播放视频,https://www.youtube-nocookie.com会设置一个名为 NID 的 cookie。在设置 cookie 方面,这与使用www.youtube.com通过 iframe 加载视频的结果相同。

<div id="js-player"></div>
<script src="https://www.youtube.com/player_api"></script>
window.onYouTubePlayerAPIReady = function() {
  new YT.Player(document.getElementById("js-player"), {
    height: '315',
    width: '560',
    host: 'https://www.youtube-nocookie.com',
    videoId: 'M7lc1UVf-VE'
  })
};

https://jsfiddle.net/c9Lbksx6/

因此,无论您做什么,在使用带有 JavaScript 控件的 YouTube 播放器 API 时,您最终都会得到至少 1 个 cookie。不幸的是,目前似乎没有理想的解决方案。


推荐阅读