From 2949fc8dcbafd0af2740d3c11f69b042fcd4cd6c Mon Sep 17 00:00:00 2001 From: mohammed adib Date: Mon, 6 Jul 2026 11:30:29 +0530 Subject: [PATCH] fix cache-origin check in amp-ad-template-helper --- extensions/amp-a4a/0.1/amp-ad-template-helper.js | 4 ++-- .../amp-a4a/0.1/test/test-amp-ad-template-helper.js | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/extensions/amp-a4a/0.1/amp-ad-template-helper.js b/extensions/amp-a4a/0.1/amp-ad-template-helper.js index 7ae89c01258e..5ae77b087bed 100644 --- a/extensions/amp-a4a/0.1/amp-ad-template-helper.js +++ b/extensions/amp-a4a/0.1/amp-ad-template-helper.js @@ -12,7 +12,7 @@ import { getServiceForDoc, registerServiceBuilderForDoc, } from '../../../src/service-helpers'; -import {parseUrlDeprecated} from '../../../src/url'; +import {isProxyOrigin, parseUrlDeprecated} from '../../../src/url'; /** @private {!{[key: string]: string|boolean}} */ const TEMPLATE_CORS_CONFIG = { @@ -114,7 +114,7 @@ export class AmpAdTemplateHelper { getTemplateProxyUrl_(url) { const cdnUrlSuffix = urls.cdn.slice(8); const loc = parseUrlDeprecated(url); - return loc.origin.indexOf(cdnUrlSuffix) > 0 + return isProxyOrigin(loc) ? url : 'https://' + loc.hostname.replace(/-/g, '--').replace(/\./g, '-') + diff --git a/extensions/amp-a4a/0.1/test/test-amp-ad-template-helper.js b/extensions/amp-a4a/0.1/test/test-amp-ad-template-helper.js index f3ea71e60c21..59acd8bdee94 100644 --- a/extensions/amp-a4a/0.1/test/test-amp-ad-template-helper.js +++ b/extensions/amp-a4a/0.1/test/test-amp-ad-template-helper.js @@ -59,6 +59,15 @@ describes.fakeWin('AmpAdTemplateHelper', {amp: true}, (env) => { ); }); + it('should proxy a host that only embeds the CDN name as a substring', () => { + const lookalikeUrl = + 'https://cdn.ampproject.org.evil.example/amp_template_1'; + expect(ampAdTemplateHelper.getTemplateProxyUrl_(lookalikeUrl)).to.equal( + 'https://cdn-ampproject-org-evil-example.cdn.ampproject.org/ad/s/' + + 'cdn.ampproject.org.evil.example/amp_template_1' + ); + }); + it('should render a template with correct values', () => { const parentDiv = doc.createElement('div'); parentDiv./*OK*/ innerHTML =