From fa82f0435775d1b097ec3aebcc0f6598859ceedc Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 2 Sep 2025 19:41:49 +0800 Subject: [PATCH] perf: Cross-domain settings - Regex validation rule error --- frontend/src/views/system/embedded/Page.vue | 23 ++++++++++++++++--- frontend/src/views/system/embedded/iframe.vue | 3 ++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/frontend/src/views/system/embedded/Page.vue b/frontend/src/views/system/embedded/Page.vue index 7a20c00b..e26ddffe 100644 --- a/frontend/src/views/system/embedded/Page.vue +++ b/frontend/src/views/system/embedded/Page.vue @@ -199,7 +199,24 @@ const search = () => { } const termFormRef = ref() - +const validateUrl = (_: any, value: any, callback: any) => { + if (value === '') { + callback( + new Error( + t('datasource.please_enter') + t('common.empty') + t('embedded.cross_domain_settings') + ) + ) + } else { + // var Expression = /(https?:\/\/)?([\da-z\.-]+)\.([a-z]{2,6})(:\d{1,5})?([\/\w\.-]*)*\/?(#[\S]+)?/ // eslint-disable-line + var Expression = /^https?:\/\/[^\s/?#]+(:\d+)?/i + var objExp = new RegExp(Expression) + if (objExp.test(value) && !value.endsWith('/')) { + callback() + } else { + callback(t('embedded.format_is_incorrect')) + } + } +} const rules = { name: [ { @@ -210,8 +227,8 @@ const rules = { domain: [ { required: true, - message: - t('datasource.please_enter') + t('common.empty') + t('embedded.cross_domain_settings'), + validator: validateUrl, + trigger: 'blur', }, ], } diff --git a/frontend/src/views/system/embedded/iframe.vue b/frontend/src/views/system/embedded/iframe.vue index 74135408..c933df7a 100644 --- a/frontend/src/views/system/embedded/iframe.vue +++ b/frontend/src/views/system/embedded/iframe.vue @@ -258,7 +258,8 @@ const validateUrl = (_: any, value: any, callback: any) => { ) ) } else { - var Expression = /(https?:\/\/)?([\da-z\.-]+)\.([a-z]{2,6})(:\d{1,5})?([\/\w\.-]*)*\/?(#[\S]+)?/ // eslint-disable-line + // var Expression = /(https?:\/\/)?([\da-z\.-]+)\.([a-z]{2,6})(:\d{1,5})?([\/\w\.-]*)*\/?(#[\S]+)?/ // eslint-disable-line + var Expression = /^https?:\/\/[^\s/?#]+(:\d+)?/i var objExp = new RegExp(Expression) if (objExp.test(value) && !value.endsWith('/')) { callback()