Skip to content

Google Ads does not respect Critical-CH restart #150

@mack-branch

Description

@mack-branch

Hello, I work for an ad tech company and we have found some edge cases where the critical-ch restart does not play nicely with redirects between domains, or "wrapped domains". Unfortunately this is a very important and common use case in the ads world, including Google Ads.

Example Google Ads link: https://www.google.com/aclk?sa=L&ai=DChcSEwi-l7XdtPL9AhUR7u0KHQrmDQkYABAAGgJkZw&sig=AOD64_0hvmE49iyDD2sX3y9g3VMWQztshg&q&adurl&ved=2ahUKEwim3a_dtPL9AhXlRkEAHcuQDKgQ0Qx6BAgHEAE

Steps to repro

  1. open a new incognito window
  2. open network tab of developer tools
  3. paste the above link into search bar
  4. observe a 302 redirect to https://mettle.app.link/?%243p=a_google_adwords&%24always_deeplink=false&gclid=EAIaIQobChMIvpe13bTy_QIVEe7tCh0K5g0JEAAYASAAEgI6uPD_BwE&~ad_set_id=84381513814&~campaign_id=8309221182&~channel=g&~keyword=mettle&~placement=&$fallback_url=https://www.mettle.co.uk%3Fgclsrc%3Daw.ds%26&gclid=EAIaIQobChMIvpe13bTy_QIVEe7tCh0K5g0JEAAYASAAEgI6uPD_BwE
  5. The above request hits our servers, where we are returning an HTTP OK and a critical-ch header requesting two critical client hints: platform-version and model.

Problem

Expected Result:

Actual Result:

  • Chrome does not restart the request immediately and instead renders the 200 OK page.
  • If you manually refresh the page, Chrome now sends the CH headers and the request redirects normally.

More details

I have not been able to reproduce this with other domains that 302 redirect to each other, it seems specific to Google Ads right now. I can also confirm that only one origin (our server) is requesting a critical hint retry, not multiple.

Please note that since this is a critical issue for us we are urgently working to mitigate this on our end, so this may not be reproducible in the wild after a few days. If this becomes an issue let me know and I can set up a test domain where we can reproduce this issue live.

I have also attached a bunch of screenshots from when I reproduced this issue. It is happening consistently (100% of the time) if the browser doesnt already have the critical hints cached (i.e. new incognito window or clear cache).

Thanks!

app_link_req_headers

app_link_response_headers

app_link_general

google_com_general

google_com_response_headers

google_com_req_headers

google_ads_critical-ch_failure

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions