From 8e2fd55923a4da38eb2ddda51dc1b96943be0c56 Mon Sep 17 00:00:00 2001 From: satotake Date: Sun, 5 Jun 2022 15:26:16 +0900 Subject: [PATCH] livereload: Use `X-Forwarded-Host` for Codespace Codespace has 2 types of usage 1. in browser 2. vscode on local computer As long as you select 2 (on local), Hugo handles livereload expectedly. But if you use it in browser, Hugo does not reload on file change, as #9936 said. This issue happens because `CheckOrigin` always fails. Remote server could rewrite request host name. Fix this by respecting `X-Forwarded-Host` header during origin checking After merging this, you can preview changes lively with codespaece in browser. ```sh hugo server --liveReloadPort 443 ``` Close #9936 --- livereload/livereload.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/livereload/livereload.go b/livereload/livereload.go index 145cc25ea..246a7393c 100644 --- a/livereload/livereload.go +++ b/livereload/livereload.go @@ -62,7 +62,13 @@ var upgrader = &websocket.Upgrader{ return false } - if u.Host == r.Host { + rHost := r.Host + // For Github codespace in browser #9936 + if forwardedHost := r.Header.Get("X-Forwarded-Host"); forwardedHost != "" { + rHost = forwardedHost + } + + if u.Host == rHost { return true }