From 18c23c17d970ad733f4ac74959047fc172cde2d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20St=C3=BCrmer?= Date: Tue, 18 Oct 2016 19:55:31 +0200 Subject: [PATCH 1/2] URI-encode forwarded location header in proxy Right now there are situations in which ElasticSearch puts characters in the character code range between 128 and 255 into the `Location` header. This leads to an exception when trying to pass on that header through the hapi proxy in versions before 15.0.0, because it validates that only US-ASCII characters are used in headers. To work around that situation, the `Location` header is encoded using `encodeURI()` for now. Closes #8705 --- src/core_plugins/elasticsearch/lib/create_proxy.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core_plugins/elasticsearch/lib/create_proxy.js b/src/core_plugins/elasticsearch/lib/create_proxy.js index 2ef2bd1da56d8..44490ca5720d8 100644 --- a/src/core_plugins/elasticsearch/lib/create_proxy.js +++ b/src/core_plugins/elasticsearch/lib/create_proxy.js @@ -20,7 +20,14 @@ function createProxy(server, method, route, config) { xforward: true, timeout: server.config().get('elasticsearch.requestTimeout'), onResponse: function (err, responseFromUpstream, request, reply) { - reply(err, responseFromUpstream); + const upstreamLocation = responseFromUpstream.headers.location; + const response = reply(err, responseFromUpstream); + + // Workaround for #8705 until hapi has been updated to >= 15.0.0 + if (upstreamLocation) { + delete responseFromUpstream.headers.location; + response.location(encodeURI(upstreamLocation)); + } } } }, From e100e1f5c98fc028846387c12d9d403e9f905758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20St=C3=BCrmer?= Date: Wed, 19 Oct 2016 11:01:46 +0200 Subject: [PATCH 2/2] Add test to verify umlaut in vis name Relates to #8705 --- test/functional/apps/visualize/_area_chart.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/functional/apps/visualize/_area_chart.js b/test/functional/apps/visualize/_area_chart.js index 15bbf4aada834..bd9bfec024801 100644 --- a/test/functional/apps/visualize/_area_chart.js +++ b/test/functional/apps/visualize/_area_chart.js @@ -74,6 +74,16 @@ bdd.describe('visualize app', function describeIndexTests() { }); }); + bdd.it('should save and load with non-ascii characters', async function () { + const vizNamewithSpecialChars = `${vizName1} with Umlaut รค`; + const message = await PageObjects.visualize.saveVisualization(vizNamewithSpecialChars); + + PageObjects.common.debug(`Saved viz message with umlaut = ${message}`); + expect(message).to.be(`Visualization Editor: Saved Visualization "${vizNamewithSpecialChars}"`); + + await PageObjects.visualize.waitForToastMessageGone(); + }); + bdd.it('should save and load', function () { return PageObjects.visualize.saveVisualization(vizName1) .then(function (message) {