(ctx Context)
| 236 | } |
| 237 | |
| 238 | func getSchemaHost(ctx Context) string { |
| 239 | if host := ctx.Header("X-Forwarded-Host"); host != "" { |
| 240 | return host |
| 241 | } |
| 242 | |
| 243 | if fwd := ctx.Header("Forwarded"); fwd != "" { |
| 244 | for part := range strings.SplitSeq(fwd, ",") { |
| 245 | for directive := range strings.SplitSeq(part, ";") { |
| 246 | directive = strings.TrimSpace(directive) |
| 247 | if strings.HasPrefix(strings.ToLower(directive), "host=") { |
| 248 | return strings.Trim(directive[5:], "\"") |
| 249 | } |
| 250 | } |
| 251 | } |
| 252 | } |
| 253 | |
| 254 | return ctx.Host() |
| 255 | } |