diff options
author | satotake <[email protected]> | 2022-06-05 15:26:16 +0900 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2022-06-05 11:16:24 +0200 |
commit | 8e2fd55923a4da38eb2ddda51dc1b96943be0c56 (patch) | |
tree | e5b3474eb534f9dd78ce5f01a3a6fcbd64f547c4 /livereload | |
parent | 311b8008bfba3411741ef8ebe4b094adb92ce041 (diff) | |
download | hugo-8e2fd55923a4da38eb2ddda51dc1b96943be0c56.tar.gz hugo-8e2fd55923a4da38eb2ddda51dc1b96943be0c56.zip |
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
Diffstat (limited to 'livereload')
-rw-r--r-- | livereload/livereload.go | 8 |
1 files changed, 7 insertions, 1 deletions
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 } |