Reviving this thread, as while talking to folks about deploying this I realized we should name `__HostHttp-` to be `__Host-Http-`. That makes sure that deploying __Host-Http- prefixed cookies maintains host semantics in non-supporting browsers and makes for a progressive enhancement. (rather than requiring complex server side logic to determine the cookie name based on browser and version)
I discussed the rename with WebKit, Mozilla and Chrome engineers on the #cookies matrix channel and everyone seemed on board with it. I also filed spec <https://github.com/httpwg/http-extensions/pull/3153> PRs <https://github.com/whatwg/cookiestore/pull/286> as well as WPT <https://github.com/web-platform-tests/wpt/pull/54226>. Since this never hit stable (it landed in 140, which is still in Beta), I suggest to: * Turn off the feature flag <https://source.chromium.org/chromium/chromium/src/+/main:net/base/features.h;l=184?q=hosthttp%20f:feature&ss=chromium%2Fchromium%2Fsrc> in 140 (either in code with back-merges or on the server-side if Google folks are interested in helping with that). * Rename the prefix in 141 and enable the flag there. That would mean that the __Http- prefix would ship in 140 and __HostHttp- ships in 141, but I think that's perfectly fine. What do y'all think? P.S. Another thing that seems important for ease of deployment is that supporting browsers would apply the prefix rules to cookies already in their stores when they are upgraded. I'm planning to change Chromium's implementation to support that, but that doesn't seem extremely web-exposed. Let me know if you think otherwise. On Mon, Jun 30, 2025 at 4:36 PM Yoav Weiss (@Shopify) < yoavwe...@chromium.org> wrote: > Just to close the loop, the PR has landed, and the feature is now enabled > by default > <https://chromium-review.googlesource.com/c/chromium/src/+/6683341>. > Thanks all!! > > On Wed, Jun 25, 2025 at 8:59 PM PhistucK <phist...@gmail.com> wrote: > >> I asked Copilot there and it went over the results itself and found >> nothing, too. Handy (even if not 100% reliable). :) >> >> >> ☆*PhistucK* >> >> >> On Wed, Jun 25, 2025 at 7:57 PM Yoav Weiss (@Shopify) < >> yoavwe...@chromium.org> wrote: >> >>> >>> >>> On Wed, Jun 25, 2025 at 7:37 PM PhistucK <phist...@gmail.com> wrote: >>> >>>> Have you tried searching GitHub with a regular expression? Seems not to >>>> ignore anything. :) >>>> https://github.com/search?q=%2F__Http-%2F&type=code >>>> >>> >>> Thanks!! Going over the results, it seems like there's nothing there >>> related to cookies (other than the WPT that testing this very feature). >>> >>> >>>> >>>> >>>> ☆*PhistucK* >>>> >>>> >>>> On Wed, Jun 25, 2025 at 6:00 AM Yoav Weiss (@Shopify) < >>>> yoavwe...@chromium.org> wrote: >>>> >>>>> >>>>> >>>>> On Wed, Jun 25, 2025 at 4:18 AM Vladimir Levin <vmp...@chromium.org> >>>>> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Thursday, June 19, 2025 at 9:48:37 AM UTC-4 Yoav Weiss wrote: >>>>>> >>>>>> Contact emailsyoavwe...@chromium.org >>>>>> >>>>>> Explainer >>>>>> This will add the cookie name prefix `__Http-`. >>>>>> Cookies that would start with that prefix would only be able to be >>>>>> set using the `Set-Cookie` HTTP header and will have to have an >>>>>> `httpOnly` >>>>>> attribute. >>>>>> >>>>>> Adding that prefix to the cookie name will give site operators the >>>>>> guarantee that any such cookie they see was set by their server, and not >>>>>> be >>>>>> a malicious/compromised script. >>>>>> >>>>>> There are still ongoing discussions >>>>>> <https://github.com/httpwg/http-extensions/issues/3111#issuecomment-2986560222> >>>>>> about the exact spelling of a combination of this prefix with the >>>>>> `__Host-` >>>>>> prefix. I'd like this intent to cover both, but I'm not planning to ship >>>>>> the `__HostHttp` variant until the dust settles on the desired spelling. >>>>>> >>>>>> Specificationhttps://github.com/httpwg/http-extensions/pull/3110 >>>>>> >>>>>> Summary >>>>>> >>>>>> There are cases where it's important to distinguish on the server >>>>>> side between cookies that were set by the server and ones that were set >>>>>> by >>>>>> the client. One such case is cookies that are normally always set by the >>>>>> server, unless some unexpected code (an XSS exploit, a malicious >>>>>> extension, >>>>>> a commit from a confused developer, etc.) happens to set them on the >>>>>> client. This proposal adds a signal that would enable servers to make >>>>>> such >>>>>> a distinction. More specifically, it defines the __Http and __HostHttp >>>>>> prefixes, that make sure that a cookie is not set on the client side >>>>>> using >>>>>> script. >>>>>> >>>>>> >>>>>> What is the behavior if one attempts to set an `__Http`-prefixed >>>>>> cookie from script with this feature? Does it silently fail, or is there >>>>>> an >>>>>> error that is thrown? >>>>>> >>>>> >>>>> Similar to existing prefixes >>>>> <https://github.com/web-platform-tests/wpt/blob/master/cookies/resources/cookie-helper.sub.js#L76>, >>>>> when setting a cookie using `document.cookie`, the only way to know it >>>>> failed is observing (on the server) it is not present in relevant >>>>> requests. >>>>> Setting such a cookie through the CookieStore API results in a Promise >>>>> rejection >>>>> <https://github.com/web-platform-tests/wpt/blob/master/cookie-store/cookieStore_special_names.https.any.js#L39> >>>>> . >>>>> >>>>> >>>>>> >>>>>> >>>>>> Blink componentInternals>Network>Cookies >>>>>> <https://issues.chromium.org/issues?q=customfield1222907:%22Internals%3ENetwork%3ECookies%22> >>>>>> >>>>>> TAG reviewNone, as the TAG doesn't typically review HTTP features. >>>>>> >>>>>> TAG review statusNot applicable >>>>>> >>>>>> Risks >>>>>> >>>>>> >>>>>> Interoperability and Compatibility >>>>>> >>>>>> No particular compat issues, as we don't expect this prefix to >>>>>> already exist in the wild. >>>>>> >>>>>> In terms of interop, Mozilla and Apple folks are heavily involved in >>>>>> the discussions and haven't raised any concerns. >>>>>> >>>>>> >>>>>> I agree that the chance of there being __Http named cookies is very >>>>>> low, but I've been wrong about things like this before :) Do you have any >>>>>> metrics/code searches/etc to validate that this is safe from compat >>>>>> perspective? >>>>>> >>>>> >>>>> I don't have any metrics, and GH search seems to ignore the _ and - >>>>> parts when searching for `__Http-`.. >>>>> I agree there's a non-zero change that someone added such a prefix to >>>>> a cookie (without it being httpOnly), but I think having a Finch flag to >>>>> be >>>>> able to turn the feature off in case that turns out to be the case is >>>>> sufficient. >>>>> >>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> *Gecko*: No signal (https://github.com/mozilla/ >>>>>> standards-positions/issues/1256) >>>>>> >>>>>> *WebKit*: No signal (https://github.com/WebKit/ >>>>>> standards-positions/issues/518) >>>>>> >>>>>> *Web developers*: Positive (https://lists.w3.org/ >>>>>> Archives/Public/ietf-http-wg/2025JanMar/0146.html) >>>>>> >>>>>> *Other signals*: >>>>>> >>>>>> WebView application risks >>>>>> >>>>>> Does this intent deprecate or change behavior of existing APIs, such >>>>>> that it has potentially high risk for Android WebView-based applications? >>>>>> >>>>>> None >>>>>> >>>>>> >>>>>> Debuggability >>>>>> >>>>>> None >>>>>> >>>>>> >>>>>> Will this feature be supported on all six Blink platforms (Windows, >>>>>> Mac, Linux, ChromeOS, Android, and Android WebView)?Yes >>>>>> >>>>>> Is this feature fully tested by web-platform-tests >>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>>>>> ?Yes >>>>>> https://chromium-review.googlesource.com/c/chromium/ >>>>>> src/+/6638647/15/third_party/blink/web_tests/external/wpt/ >>>>>> cookies/prefix/__Http.https.html >>>>>> https://chromium-review.googlesource.com/c/chromium/ >>>>>> src/+/6650996/2/third_party/blink/web_tests/external/wpt/ >>>>>> cookies/prefix/__HostHttp.https.html >>>>>> >>>>>> Flag name on about://flagsNone >>>>>> >>>>>> Finch feature namePrefixCookieHttp, PrefixCookieHostHttp >>>>>> >>>>>> Rollout planWill ship enabled for all users >>>>>> >>>>>> Requires code in //chrome?False >>>>>> >>>>>> Tracking bughttps://issues.chromium.org/issues/426096760 >>>>>> >>>>>> Estimated milestonesShipping on desktop140Shipping on Android140Shipping >>>>>> on WebView140 >>>>>> >>>>>> Anticipated spec changes >>>>>> >>>>>> Open questions about a feature may be a source of future web compat >>>>>> or interop issues. Please list open issues (e.g. links to known github >>>>>> issues in the project for the feature specification) whose resolution may >>>>>> introduce web compat/interop risk (e.g., changing to naming or structure >>>>>> of >>>>>> the API in a non-backward-compatible way). >>>>>> None >>>>>> >>>>>> Link to entry on the Chrome Platform Statushttps://chromestatus.com/ >>>>>> feature/5170139586363392?gate=5174068239925248 >>>>>> >>>>>> This intent message was generated by Chrome Platform Status >>>>>> <https://chromestatus.com/>. >>>>>> >>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "blink-dev" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to blink-dev+unsubscr...@chromium.org. >>>>> To view this discussion visit >>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOmohS%2BRtDnZ9x5izwv8_4xUBOxZrzBd2L8Eh_Cn58dPvd9Ayw%40mail.gmail.com >>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOmohS%2BRtDnZ9x5izwv8_4xUBOxZrzBd2L8Eh_Cn58dPvd9Ayw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOmohSKsGyqchsfbHrXBLPorj--FaTvtJ4wROsNK2dwgkrUaYg%40mail.gmail.com.