From 7aa35ff958eec0c7d071d3fcd481db57281dbcd9 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Thu, 16 Feb 2023 14:40:51 +0000 Subject: [PATCH] fix(nuxt): validate no `//` in path when constructing payload url (#19085) --- packages/nuxt/src/app/composables/payload.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/nuxt/src/app/composables/payload.ts b/packages/nuxt/src/app/composables/payload.ts index 3be8deb3ff4..e06a1cb7aa0 100644 --- a/packages/nuxt/src/app/composables/payload.ts +++ b/packages/nuxt/src/app/composables/payload.ts @@ -1,4 +1,4 @@ -import { joinURL } from 'ufo' +import { joinURL, hasProtocol } from 'ufo' import { useNuxtApp, useRuntimeConfig } from '../nuxt' import { useHead } from './head' @@ -37,13 +37,13 @@ export function preloadPayload (url: string, opts: LoadPayloadOptions = {}) { // --- Internal --- function _getPayloadURL (url: string, opts: LoadPayloadOptions = {}) { + if (hasProtocol(url, true)) { + throw new Error('Payload URL must not include hostname: ' + url) + } const u = new URL(url, 'http://localhost') if (u.search) { throw new Error('Payload URL cannot contain search params: ' + url) } - if (u.host !== 'localhost') { - throw new Error('Payload URL cannot contain host: ' + url) - } const hash = opts.hash || (opts.fresh ? Date.now() : '') return joinURL(useRuntimeConfig().app.baseURL, u.pathname, hash ? `_payload.${hash}.js` : '_payload.js') }