惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Y
Y Combinator Blog
月光博客
月光博客
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
博客园 - 司徒正美
V
Visual Studio Blog
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
The Cloudflare Blog

MDN Blog

Introducing the MDN MCP server | MDN Blog Under the hood of MDN's new frontend | MDN Blog Image formats: Codecs and compression tools | MDN Blog A beginner-friendly guide to view transitions in CSS | MDN Blog Launching MDN's new front end | MDN Blog Image formats: Pixel data from encoders to decoders | MDN Blog Celebrating 20 years of MDN | MDN Blog Image formats: Color models for humans and devices | MDN Blog Default styles for h1 elements are changing | MDN Blog JavaScript Temporal is coming | MDN Blog Fix your website's Largest Contentful Paint by optimizing image loading | MDN Blog MDN 2024 content projects | MDN Blog A new learning experience on MDN | MDN Blog Countdown to the holidays with daily coding challenges | MDN Blog Monitoring and optimizing website performance | MDN Blog How to land your first developer job | MDN Blog Introducing the new MDN Community page | MDN Blog Fixing your website's JavaScript performance | MDN Blog Get back to school! Supercharge your learning with MDN and Scrimba | MDN Blog Efficient data handling with the Streams API | MDN Blog Locale-sensitive text segmentation in JavaScript with Intl.Segmenter | MDN Blog Optimize your workflow with Git stash | MDN Blog How to debug mobile apps across devices | MDN Blog Exclusive accordions using the HTML details element | MDN Blog Exploring the Broadcast Channel API for cross-tab communication | MDN Blog MDN partners with Scrimba to enhance web development learning | MDN Blog Introducing the MDN HTTP Observatory | MDN Blog Static Site Generation (SSG) with Next.js | MDN Blog New JavaScript Set methods | MDN Blog Securing APIs: Express rate limit and slow down | MDN Blog
Implications of Global Privacy Control | MDN Blog
Lola Odelola March 15, 2025 5 minutes read · 2025-03-15 · via MDN Blog

Privacy has been a focal point for the World Wide Web Consortium (W3C) for the last few years, with their release of their Privacy Principles and browser vendors working on what host of tools should replace third-party cookies. It makes sense, then, that the Global Privacy Control (GPC) has gained traction and is on a standards track, with the Privacy Working Group having recently published the first working draft. This article takes a look at the draft, and how it will look for website owners and users who want to make use of GPC.

Trust and data collection

According to the UK Government's Center for Ethics and Innovation, 57% of respondents agree that collecting personal data "is useful for creating products and services that benefit them as individuals". Only 46% of respondents trust that big tech companies will let them make decisions about how their data is used, and that number drops to 31% when referring to social media companies.

We can interpret this to mean that most respondents distrust social media and big tech companies regarding decision-making and consent as it relates to their data. There's clearly a desire from users to have more control over how personal data is collected and shared, but striking a balance that's easy to control and enforce is delicate.

GPC and Do Not Track (DNT)

This isn't the first time that a tracking prevention mechanism has reached the W3C and been implemented by browsers. In 2009 the Do Not Track (DNT) header was created as a way for web users to express their tracking preferences. While it was widely implemented in browsers, it had a low adoption rate with websites.

The main problem with DNT was the lack of legal and regulatory backing it received. Website owners could decide if they'd observe the DNT signal and there were no legal repercussions if they chose not to. This is where GPC is different.

At the time of writing, the Attorney General for California has recommended observation of GPC to comply with CCPA. There are also intentions to work with the European Union's GDPR:

The GPC signal will be intended to communicate a Do Not Sell request from a global privacy control, as per CCPA-REGULATIONS §999.315 for that browser or device, or, if known, the consumer. Under the GDPR, the intent of the GPC signal is to convey a general request that data controllers limit the sale or sharing of the user's personal data to other da ta controllers (GDPR Articles 7 & 21). Over time, the GPC signal may be intended to communicate rights in other jurisdictions. – globalprivacycontrol.org/#about

The signal also has support from various browsers and extensions including Mozilla's Firefox, Brave and DuckDuckGo's Privacy Browser.

GPC is different from other proposals being discussed and developed in that it gives power to the web user. Google is working on the User-Agent Client Hints specification in the Web Platform Incubator Community Group, and Bounce Tracking Mitigation is on the Privacy Working Group's charter. While both proposals have their merits, neither gives the user a choice in the way that GPC does.

How GPC may give more control to users

Web users want to have more autonomy over their data. They want to know who has it, where it's going and why, and they want to be able to consent to how their data moves between parties. GPC proposes two browser signals which can be set on all HTTP requests as headers. The two signals will be an interaction and a preference both called do-not-sell-or-share, which differ by scope.

Interaction is set per domain, for example, a web user may want to allow the National Health Service https://nhs.uk to share their data with their pharmacy or health insurance, so they could switch the do-not-sell-or-share interaction for https://nhs.uk off. The same user may not want https://tiktok.com to share their data with anyone so they'd turn the interaction on for https://tiktok.com.

The scope of the interaction is for a domain, and, the scope for the preference encompasses all interactions per browser. Setting a preference is setting a Global Privacy Control.

What GPC looks like for website owners

It's a requirement to return the GPC support resource as a JSON object from a well-known URI (/.well-known/gpc.json) with these members:

{
  "gpc": true,
  "lastUpdate": "1997-03-10"
}

Which has this meaning:

gpc

The value of the gpc is either true (the server intends to abide by GPC requests) or false, to indicate that it does not. For any other value the origin's support is unknown.

lastUpdate

A full-date (YYYY-MM-DD) or date-time (YYYY-MM-DDTHH:mm:ss.sssZ) indicating the time at which the statement of support was made. Later changes to the meaning of the GPC standard should not affect the interpretation of the resource for legal purposes.

For handling requests with a GPC signal, developers can implement a listener by checking for the Sec-GPC HTTP header in requests. An Express app might look like this:

// Any route
app.get("/", function (req, res) {
  // Check for a `Sec-GPC` header:
  const gpcValue = req.header("Sec-GPC");
  if (gpcValue === "1") {
    // Signal detected
    optOutUser(userId);
  }
});

You can alternatively use the globalPrivacyControl property in the browser:

const gpcValue = navigator.globalPrivacyControl;
if (gpcValue) {
  // Signal detected
  optOutUser(userId);
}

The examples above uss a placeholder optOutUser(userId) for illustration, but the backend should call whatever logic is needed to satisfy the user's choice.

The HTTP response would look something like this if the user has set GPC to "true":

200 OK
Access-Control-Allow-Origin: *
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
…
Sec-GPC: 1

What to do when receiving a GPC signal

It's up to the developer/business to decide how to treat the signal, for example, removing the user's details from third-party tracking or marketing, following a similar procedure as to when users opt out of sharing data for marketing purposes. If in CCPA jurisdiction, the signal must be observed to avoid legal repercussions.

Trying GPC and browser support

GPC is currently available in the latest versions of Firefox, Brave and DuckDuckGo's Privacy Browser and users can turn the signal on in their settings (PDF). In addition to browser config, GPC extensions are available for Microsoft Edge and Google Chrome.

Developers can test GPC in Express apps using the express-gpc middleware, which you can to your project using npm i express-gpc.

Summary

GPC is an exciting specification, in a sea of companies hyper-focussed on how to do private advertising, it's refreshing to have a specification that prioritizes the needs of the web user. With growing browser support and not much integration needed for developers, it's a step toward greater transparency and control for web users.

Lola Odelola is a web standards technologist who works to make web standards accessible to developers. Lola sits on the W3C Technical Architecture Group and participates in various W3C groups as a W3C Invited Expert.