From e29738367258357d754b9d8a01e742fadf5e7943 Mon Sep 17 00:00:00 2001 From: Dillon Date: Sat, 26 Aug 2023 08:46:00 +0800 Subject: [PATCH] Fix an error 500 related to URL encoding --- .../assets/vue/vuex/modules/crudRequest.js | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/resources/assets/vue/vuex/modules/crudRequest.js b/resources/assets/vue/vuex/modules/crudRequest.js index 1bb07e78..1360fd58 100644 --- a/resources/assets/vue/vuex/modules/crudRequest.js +++ b/resources/assets/vue/vuex/modules/crudRequest.js @@ -3,8 +3,12 @@ export default { crudRequest({getters, dispatch}, {endpoint, method, parameters}){ return dispatch('ensureReCaptchaIsSet').then(function () { const queryDomain = endpoint.split('?')[0]; - const queryParams = encodeURIComponent(endpoint.split('?')[1]); - let encodedParams = queryParams.toString(); + let isStringEncoded = isEncoded(endpoint.split('?')[1]); + let encodedParams = endpoint.split('?')[1]; + if(!isStringEncoded){ + const queryParams = encodeURIComponent(endpoint.split('?')[1]); + encodedParams = queryParams.toString(); + } let filteredEncodedParams = encodedParams.replace(/%3D/g,'='); filteredEncodedParams = filteredEncodedParams.replace(/%26/g,'&'); console.log('filteredEncodedParams: ', filteredEncodedParams); @@ -36,3 +40,15 @@ export default { } } } + +function isEncoded(uri) { + uri = uri || ''; + return uri !== decodeURIComponent(uri); +} + +function fullyDecodeURI(uri){ + while (isEncoded(uri)){ + uri = decodeURIComponent(uri); + } + return uri; +}