Skip to content

[CORS Proxy] Support chunked encoding when running in Apache/Nginx/etc - #2114

Merged
adamziel merged 2 commits into
trunkfrom
adamziel-patch-1
Jan 9, 2025
Merged

[CORS Proxy] Support chunked encoding when running in Apache/Nginx/etc#2114
adamziel merged 2 commits into
trunkfrom
adamziel-patch-1

Conversation

@adamziel

@adamziel adamziel commented Jan 2, 2025

Copy link
Copy Markdown
Collaborator

Adds support for transfer-encoding: chunked on Apache, Nginx, and other web servers.

#2077 added support for transfer-encoding: chunked in a way that works on a local PHP dev server. The proxy manually chunks the output bytes and outputs each chunk's header, separator, body, and trailer.

However, it doesn't work on playground.wordpress.net because the web server there handles the chunked encoding on its own. The bytes echoed by cors-proxy.php are treated as body bytes, which messes up the response body.

This PR restricts the manual chunking to a local CLI dev server.

Testing instructions

Run cors-proxy.php in Apache or so and confirm that requesting resources served with chunked encoding works with this patch but not without it. One such URL is https://adamadam.blog/feed/.

Adds support for `transfer-encoding: chunked` on Apache, Nginx, and other web servers.

#2077 added support for `transfer-encoding: chunked` in a way that works on a local PHP dev server. The proxy manually chunks the output bytes and outputs each chunk's header, separator, body, and trailer.

However, it doesn't work on playground.wordpress.net because the web server there handles the chunked encoding on its own. The bytes echoed by cors-proxy.php are treated as body bytes, which messes up the response body.

This PR restricts the manual chunking to a local CLI dev server.

## Testing instructions

Run cors-proxy.php in Apache or so and confirm that requesting resources served with chunked encoding works with this patch but not without it. One such URL is https://adamadam.blog/feed/.
@adamziel adamziel added [Type] Bug An existing feature does not function as intended [Package][@wp-playground] CORS Proxy labels Jan 2, 2025
@adamziel adamziel changed the title [CORS Proxy] Fix transfer-encoding: chunked Jan 2, 2025
@adamziel adamziel changed the title [CORS Proxy] Support chunked encoding when running behind Apache Jan 2, 2025
@adamziel adamziel changed the title [CORS Proxy] Support chunked encoding in Apache Jan 2, 2025

@brandonpayton brandonpayton left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool :) This looks reasonable, and it's interesting to learn of the need of this. I guess it's not surprising that web servers would manage their own response encoding.

Comment thread packages/playground/php-cors-proxy/cors-proxy.php Outdated
@adamziel
adamziel merged commit 4f810db into trunk Jan 9, 2025
@adamziel
adamziel deleted the adamziel-patch-1 branch January 9, 2025 11:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Package][@wp-playground] CORS Proxy [Type] Bug An existing feature does not function as intended

2 participants