]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
livereload: Use `X-Forwarded-Host` for Codespace
authorsatotake <doublequotation@gmail.com>
Sun, 5 Jun 2022 06:26:16 +0000 (15:26 +0900)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 5 Jun 2022 09:16:24 +0000 (11:16 +0200)
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

index 145cc25ea60a246c28cd4b5c3472252b76b5e5b1..246a7393cea3a14ac189bc0e7a69fbb4920308b4 100644 (file)
@@ -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
                }