-
Notifications
You must be signed in to change notification settings - Fork 1
Fix gzip response handling to preserve HTTP semantics on decode failure #31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
The debug toolbar middleware was failing to inject the toolbar HTML into gzip-compressed responses. When Litestar's compression middleware runs before the debug toolbar, the response body is gzip bytes, which cannot be decoded as UTF-8. The middleware silently returned the original body without injection. This fix: - Detects gzip content-encoding header - Decompresses the response body before injection - Injects the toolbar HTML into the decompressed HTML - Returns uncompressed response (strips content-encoding header) This ensures the toolbar is visible when compression is enabled, which is the default in many production-like configurations. Fixes toolbar not appearing on admin pages when compression is enabled. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: JacobCoffee <45884264+JacobCoffee@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot wasn't able to review any files in this pull request.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…failure Co-authored-by: JacobCoffee <45884264+JacobCoffee@users.noreply.github.com>
|
Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
When a gzipped response decompresses successfully but contains non-UTF-8 bytes, the middleware was returning decompressed binary data with no
content-encodingheader. This violates HTTP semantics—the client requested gzip viaAccept-Encodingbut received uncompressed binary.Changes
original_bodyto preserve the compressed payloadoriginal_bodywith originalcontent_encodinginstead of decompressed bytes with empty encodingdecompressedflag, usecontextlib.suppressfor cleaner codeExample
Before:
After:
The middleware now respects the client's
Accept-Encodingnegotiation when toolbar injection isn't possible.💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.