浏览器要求用户确认 Cookies Privacy(隐私相关内容)是基于隐私法规的要求,VUE 实现,html 代码

news2024/12/21 20:44:58

Cookie Notices and Cookie Consent | Cookiepedia

1. 法律法规要求

许多国家和地区的隐私法律要求网站在存储或处理用户数据(包括 Cookies)之前必须获得用户的明确同意:

GDPR(欧盟通用数据保护条例)
  • 要求: 如果网站面向欧盟用户,使用 Cookies(尤其是非必要的追踪 Cookies)时必须获得用户同意。
  • 影响: 用户需要明确接受或拒绝 Cookies(通常通过弹窗或横幅实现)。
CCPA(加州消费者隐私法)
  • 要求: 网站需告知用户其数据如何被收集,并提供选择退出数据出售或共享的功能。
  • 影响: 通常会显示隐私声明通知用户,提供隐私设置入口。

2. 浏览器角色

浏览器并没有主动弹出 Cookies 和隐私的确认框,但它们:

  • 提供了 API 支持: 浏览器支持存储 Cookies、localStorage、sessionStorage 等技术,网站通过这些工具实现数据存储。
  • 内置隐私功能: 现代浏览器(如 Chrome、Firefox、Safari)提供隐私设置,允许用户阻止第三方 Cookies 或清理 Cookies。
  • 监控隐私规范: 浏览器厂商(如 Google Chrome 的计划)正在逐步限制第三方 Cookies 的使用(如 Privacy Sandbox 项目)。

3. 开发者实现

Cookies 和隐私确认是由网站开发者实现的。常见实现方式:

  • Cookies 横幅通知: 页面底部或顶部显示通知,提示用户网站使用 Cookies。
  • 选择同意/拒绝: 用户点击同意后,网站才会存储非必要 Cookies。
  • 动态加载: 网站在用户同意之前,不加载追踪代码或营销工具。

实现时通常会用到以下技术:

  • JavaScript Cookies 库: 例如 js-cookie。
  • 专用插件或服务: 如 OneTrust、Cookiebot 等,专门用于管理隐私和 Cookies 合规。

4. 为什么需要用户确认

用户确认的原因在于:

  1. 保护用户隐私: 避免未经同意收集用户数据。
  2. 法律合规: 遵守 GDPR、CCPA 等隐私法规。
  3. 增强信任: 让用户了解网站如何处理其数据。

5. 用户可以选择的方式

用户可以通过浏览器隐私设置,进一步控制 Cookies:

  • 禁用第三方 Cookies: 阻止跨网站追踪。
  • 清理 Cookies: 定期清除浏览器存储的 Cookies。
  • 隐身模式: 浏览器不会保存 Cookies 等数据。

弹窗确认后的常见逻辑

  1. 获取用户选择

    • 用户选择 “接受”“拒绝”
    • 根据用户选择调用对应的处理函数。
  2. 存储用户选择

    • 将用户选择存储在浏览器的 localStoragesessionStorageCookies 中,以避免重复弹窗。
  3. 加载相关功能

    • 接受: 如果用户同意,加载相关 Cookies 或服务(如追踪代码、分析工具等)。
    • 拒绝: 如果用户拒绝,阻止非必要的 Cookies 或功能。
  4. 更新页面状态

    • 根据用户的选择动态调整页面状态或显示通知。

实现示例

1、vue3

<template>
  <div v-if="!userChoice" class="cookie-banner">
    <p>We use cookies to improve your experience. By continuing, you accept our privacy policy.</p>
    <button @click="handleAccept">Accept</button>
    <button @click="handleReject">Reject</button>
  </div>
</template>

<script lang="ts" setup>
import { ref, onMounted } from "vue";

// 存储用户选择的键名
const COOKIE_CONSENT_KEY = "cookieConsent";

// 用户选择状态
const userChoice = ref<string | null>(null);

// 检查用户选择是否已经存储
onMounted(() => {
  userChoice.value = localStorage.getItem(COOKIE_CONSENT_KEY);
});

// 接受逻辑
const handleAccept = () => {
  localStorage.setItem(COOKIE_CONSENT_KEY, "accepted");
  userChoice.value = "accepted";
  enableCookies(); // 启用相关功能
};

// 拒绝逻辑
const handleReject = () => {
  localStorage.setItem(COOKIE_CONSENT_KEY, "rejected");
  userChoice.value = "rejected";
  disableCookies(); // 阻止相关功能
};

// 启用 Cookies 和相关功能
function enableCookies() {
  console.log("Cookies enabled");
  // 示例:加载 Google Analytics
  window.dataLayer = window.dataLayer || [];
  function gtag() {
    window.dataLayer.push(arguments);
  }
  gtag("js", new Date());
  gtag("config", "YOUR_GOOGLE_ANALYTICS_ID");
}

// 禁用 Cookies 和相关功能
function disableCookies() {
  console.log("Cookies disabled");
  // 清除所有非必要的 Cookies
  document.cookie.split(";").forEach((cookie) => {
    const [name] = cookie.split("=");
    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
  });
}
</script>

<style scoped>
.cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  background: #fff;
  padding: 1rem;
  box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1);
  display: flex;
  justify-content: space-between;
  align-items: center;
  z-index: 1000;
}
button {
  margin-left: 10px;
  padding: 0.5rem 1rem;
  border: none;
  cursor: pointer;
}
</style>

直接把他挂载到 App.vue

<template>
  <div id="app">
    <!-- 页面内容 -->
    <h1>Welcome to Our Website</h1>
    <p>Enjoy browsing our application!</p>

    <!-- 引入 CookieConsent 组件 -->
    <CookieConsent />
  </div>
</template>

<script lang="ts" setup>
import CookieConsent from "./components/CookieConsent.vue";
</script>

<style>
/* App 全局样式 */
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

2、 纯Html 

<div id="cookie-consent" class="cookie-banner">
  <p>We use cookies to improve your experience. By continuing, you accept our privacy policy.</p>
  <button id="accept-cookies">Accept</button>
  <button id="reject-cookies">Reject</button>
</div>
document.addEventListener("DOMContentLoaded", () => {
  const cookieConsentBanner = document.getElementById("cookie-consent");

  // 检查用户是否已经做出选择
  const userChoice = localStorage.getItem("cookieConsent");
  if (userChoice) {
    cookieConsentBanner.style.display = "none";
    return;
  }

  // 用户点击“接受”按钮
  document.getElementById("accept-cookies").addEventListener("click", () => {
    localStorage.setItem("cookieConsent", "accepted");
    cookieConsentBanner.style.display = "none";
    enableCookies(); // 启用相关功能
  });

  // 用户点击“拒绝”按钮
  document.getElementById("reject-cookies").addEventListener("click", () => {
    localStorage.setItem("cookieConsent", "rejected");
    cookieConsentBanner.style.display = "none";
    disableCookies(); // 阻止相关功能
  });
});

// 启用 Cookies 和相关功能
function enableCookies() {
  console.log("Cookies enabled");
  // 示例:加载 Google Analytics
  window.dataLayer = window.dataLayer || [];
  function gtag() {
    dataLayer.push(arguments);
  }
  gtag("js", new Date());
  gtag("config", "YOUR_GOOGLE_ANALYTICS_ID");
}

// 禁用 Cookies 和相关功能
function disableCookies() {
  console.log("Cookies disabled");
  // 清除所有非必要的 Cookies
  document.cookie.split(";").forEach((cookie) => {
    const [name] = cookie.split("=");
    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
  });
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2263411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Chapter 18 CMOS Processing Technology

Chapter 18 CMOS Processing Technology 这一章介绍CMOS制造工艺, 介绍wafer制作, 光刻, 氧化, 离子注入, 沉淀(deposition)和刻蚀. 然后介绍MOS管制作流程, 最后介绍被动器件和互连接. 18.1 General Considerations sheet resistance为方块电阻. R ρL/(W t), 方块电阻定…

服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台V7000存储上共12块SAS机械硬盘&#xff08;其中1块是热备盘&#xff09;&#xff0c;组建了2组Mdisk&#xff0c;创建了一个pool。挂载在小型机上作为逻辑盘使用&#xff0c;小型机上安装的AIXSybase。 服务器存储故障&#xff1a; V7…

LabVIEW中的“Synchronize with Other Application Instances“

在LabVIEW中&#xff0c;“Synchronize with Other Application Instances”是一个常见的提示或错误&#xff0c;通常出现在尝试并行运行多个LabVIEW实例时&#xff0c;特别是当你打开多个VI或项目时。这个问题可能影响程序的执行流程&#xff0c;导致不同实例之间的数据同步或…

简单配置,全面保护:HZERO审计服务让安全触手可及

HZERO技术平台&#xff0c;凭借多年企业资源管理实施经验&#xff0c;深入理解企业痛点&#xff0c;为您提供了一套高效易用的审计解决方案。这套方案旨在帮助您轻松应对企业开发中的审计挑战&#xff0c;确保业务流程的合规性和透明度。 接下来&#xff0c;我将为大家详细介绍…

【论文研读】U-DiTs:在U型扩散Transformer中引入下采样Token,以更低计算成本超越DiT-XL/2

推荐理由 这篇论文提出了一种新的U型扩散Transformer模型&#xff08;U-DiT&#xff09;&#xff0c;该模型通过对自注意力机制中的查询、键和值进行下采样&#xff0c;有效减少了计算冗余&#xff0c;同时提高了性能。论文中的研究不仅包含理论分析和实验验证&#xff0c;还展…

深入理解 Linux wc 命令

文章目录 深入理解 Linux wc 命令1. 基本功能2. 常用选项3. 示例3.1 统计文件的行、单词和字符数3.2 仅统计行数3.3 统计多个文件的总和3.4 使用管道统计命令输出的行数 4. 实用案例4.1 日志分析4.2 快速统计代码行数4.3 统计单词频率 5. 注意事项6. 总结 深入理解 Linux wc 命…

SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、黑翅鸢算法BKA 黑翅鸢算法&#xff08;Black-winged kite algorithm&#xff0c;BKA&#xff09;由Wang Jun等人于2024年提出&#xff0c;该算法受黑翅鸢的迁徙和掠食行为启发而得。BKA集成了柯西突变策略和领导者策略&#xff0c;增强了算法的全局搜索能力&#xff0c;提…

[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words

python有哪些关键字_keyword_list_列表_reserved_words 回忆上次内容 hello world 不是 从来就有的 来自于 c语言 print、小括号 和 双引号 也来自于 c语言 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; python 标识符 的 命名规则 依然 完全 学习…

OpenCV 学习记录:首篇

最近在学习机器视觉&#xff0c;希望能通过记录博客的形式来鞭策自己坚持学完&#xff0c;同时也把重要的知识点记录下来供参考学习。 1. OpenCV 介绍与模块组成 什么是 OpenCV&#xff1f; OpenCV (Open Source Computer Vision Library) 是一个开源的计算机视觉和机器学习软…

GTID详解

概念和组成 1&#xff0c;全局事务表示&#xff1a;global transaction identifiers 2, GTID和事务一一对应&#xff0c;并且全局唯一 3&#xff0c;一个GTID在一个服务器上只执行一次 4&#xff0c;mysql 5.6.5开始支持 组成 GTID server_uuid:transaction_id 如&#xf…

[Unity]【图形渲染】【游戏开发】Shader数学基础4-更多矢量运算

在计算机图形学和着色器编程中,矢量运算是核心的数学工具之一。矢量用于描述空间中的位置、方向、速度等各种物理量,并在图形变换、光照计算、纹理映射等方面起着至关重要的作用。本篇文章将详细讲解矢量和标量之间的乘法与除法、矢量的加法与减法、矢量的模与单位矢量、点积…

项目管理工具Maven(一)

Maven的概念 什么是Maven 翻译为“专家”&#xff0c;“内行”Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。什么是理想的项目构建&#xff1f; 高度自动化&#xff0c;跨平台&#xff0c;可重用的组件&#xff0c;标准…

中间件 redis安装

redis官网地址&#xff1a;Redis - The Real-time Data Platform 环境 CentOS Linux release 7.9.2009 (Core) java version "17.0.12" 2024-07-16 LTS 1、通过压缩包安装redis 1&#xff0c;远程下载redis压缩包&#xff0c;或去官网下载&#xff1a;Downloads …

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>找出所有子集的异或总和再求和

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; private int ret;//返回周结果private int path;//枚举一个元素就异或进去public int subsetXORSum(int[] nums) {dfs(nums, 0);return ret;} private void dfs(int[] nums, int pos){ret path;for(int i pos; i <…

C# 从控制台应用程序入门

总目录 前言 从创建并运行第一个控制台应用程序&#xff0c;快速入门C#。 一、新建一个控制台应用程序 控制台应用程序是C# 入门时&#xff0c;学习基础语法的最佳应用程序。 打开VS2022&#xff0c;选择【创建新项目】 搜索【控制台】&#xff0c;选择控制台应用(.NET Framew…

创新实训——前端:配置问题及解决

在配置前端环境中&#xff0c;出现了一些问题&#xff1a; Error: The following dependencies are imported but could not be resolved: element-plus (imported by C:/Users/30753/Desktop/cxsx/Coarse-grained-information-processing-front/src/request.js) element-plus…

【解决方案】三方云仓与各电商平台的电子面单对接

为实现三方云仓与各电商平台的电子面单对接&#xff0c;您需要确保您的WMS&#xff08;仓库管理系统&#xff09;能够通过奇门接口&#xff08;假设这是一个特定的API或中间件服务用于连接不同的系统&#xff09;与各个电商平台进行数据交换。下面是一个简化的解决方案框架&…

属性描述符

什么是属性描述符 1 数据描述符 2 存取描述符 3 获取属性描述符 4 设置属性描述符 4.1 配置writable 4.2 配置configurable 4.3 configurable的特殊性 4.4 配置enumerable 5.同时设置多个属性的属性描述符 6.get和set的用法具体看访问器属性getter和setter帖子。 什…

PostgreSQL技术内幕21:SysLogger日志收集器的工作原理

0.简介 在前面文章中介绍了事务模块用到的事务日志结构和其工作原理&#xff0c;本文将介绍日志的另一个部分&#xff0c;操作日志&#xff0c;主要去描述SysLogger日志的工作原理&#xff0c;流程以及其中关键的实现&#xff1a;日志轮转&#xff0c;刷盘性能问题等&#xff…

Unity3D仿星露谷物语开发6之角色添加动画

1、目的 给角色添加素材中的动画&#xff0c;最终让角色动起来。 2、准备工作 当前的预设体中的Player对象还不够完善&#xff0c;需要删除掉再优化下。此时应当&#xff1a;Hierarchy中的Player对象切断和预设体的关联&#xff0c;同时删除Prefabs中的Player对象。 首先&a…