From 1c99ffa3cc07427c6215bf1451a755893823d864 Mon Sep 17 00:00:00 2001 From: Hossein Nedaee Date: Sat, 19 Oct 2019 23:27:16 +0330 Subject: [PATCH] Create and use proxy server middleware Because - Get over of CORS and mixed content browser errors --- nuxt.config.js | 3 +++ pages/index.vue | 51 ++++++++++++++++++++++++++++++++++------------ pages/settings.vue | 14 ++++++------- proxy/index.js | 50 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+), 21 deletions(-) create mode 100644 proxy/index.js diff --git a/nuxt.config.js b/nuxt.config.js index 3da26f4be..4c5f38581 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -27,6 +27,9 @@ export default { server: { host: '0.0.0.0', // default: localhost }, + serverMiddleware: [ + '~/proxy/index.js' + ], head: { title: `${meta.name} \u2022 ${meta.shortDescription}`, meta: [ diff --git a/pages/index.vue b/pages/index.vue index f5e3a0b5c..78cd3e0a9 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -700,6 +700,28 @@ behavior: 'smooth' }); }, + async makeRequest(auth, headers, requestBody) { + const config = this.$store.state.postwoman.settings.PROXY_ENABLED ? { + method: 'POST', + url: '/proxy', + data: { + method: this.method, + url: this.url + this.pathName + this.queryString, + auth, + headers, + data: requestBody ? requestBody.toString() : null + } + } : { + method: this.method, + url: this.url + this.pathName + this.queryString, + auth, + headers, + data: requestBody ? requestBody.toString() : null + }; + + const response = await this.$axios(config); + return this.$store.state.postwoman.settings.PROXY_ENABLED ? response.data : response; + }, async sendRequest() { if (!this.isValidURL) { this.$toast.error('URL is not formatted properly', { @@ -768,13 +790,8 @@ try { const startTime = Date.now(); - const payload = await this.$axios({ - method: this.method, - url: this.url + this.pathName + this.queryString, - auth, - headers, - data: requestBody ? requestBody.toString() : null - }); + + const payload = await this.makeRequest(auth, headers, requestBody); const duration = Date.now() - startTime; this.$toast.info(`Finished in ${duration}ms`, { @@ -821,13 +838,21 @@ }; this.$refs.historyComponent.addEntry(entry); return; + } else { + this.response.status = error.message; + this.response.body = "See JavaScript console (F12) for details."; + this.$toast.error('Something went wrong!', { + icon: 'error' + }); + if(!this.$store.state.postwoman.settings.PROXY_ENABLED) { + this.$toast.info('Turn on the proxy', { + duration: 4000, + action: { + text: 'Click', + } + }); + } } - - this.response.status = error.message; - this.response.body = "See JavaScript console (F12) for details."; - this.$toast.error('Something went wrong!', { - icon: 'error' - }); } }, getQueryStringFromPath() { diff --git a/pages/settings.vue b/pages/settings.vue index fbbc5cb56..3eed040aa 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -32,12 +32,6 @@ - - - --> +