From 95ac8846aa466577b2dcebf8fe5afbb262c61ebb Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Mon, 20 May 2019 00:14:21 +0200 Subject: [PATCH 1/2] Percent-encode Alerts header --- src/Foundation.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Foundation.hs b/src/Foundation.hs index b1a1f6b97..0d18ad4d5 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -1114,7 +1114,7 @@ instance Yesod UniWorX where lift . bracketOnError getMessages (mapM_ $ uncurry Yesod.addMessage) $ \msgs -> do Just msgs' <- return . forM msgs $ \(msgState, content) -> Message <$> fromPathPiece msgState <*> return content - addCustomHeader HeaderAlerts . decodeUtf8 $ JSON.encode msgs' + addCustomHeader HeaderAlerts . decodeUtf8 . urlEncode True . toStrict $ JSON.encode msgs' -- Since we implement `errorHandler` ourselves we don't need `defaultMessageWidget` defaultMessageWidget _title _body = error "defaultMessageWidget: undefined" From 7e650c59338bd446ca7f502b2e95ffb2c9186034 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Mon, 20 May 2019 23:24:57 +0200 Subject: [PATCH 2/2] URI-decode alerts header in frontend --- static/js/utils/alerts.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/static/js/utils/alerts.js b/static/js/utils/alerts.js index 52f620d12..427e38373 100644 --- a/static/js/utils/alerts.js +++ b/static/js/utils/alerts.js @@ -160,7 +160,8 @@ var alerts; for (var header of response.headers) { if (header[0] === 'alerts') { - alerts = JSON.parse(header[1]); + var decodedHeader = decodeURIComponent(header[1]); + alerts = JSON.parse(decodedHeader); break; } }