Skip to content
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

Improve internal representation of requests #9

Open
pipeline opened this issue Jun 26, 2021 · 2 comments
Open

Improve internal representation of requests #9

pipeline opened this issue Jun 26, 2021 · 2 comments
Labels
as required/requested Likely to be a large undertaking, and not strictly required in many basic scenarios

Comments

@pipeline
Copy link
Collaborator

The underlying proxy library (elazarl/goproxy) and internal functions use the golang representation of HTTP requests/responses. These have limitations, and in particular header order (and likely capitilisation) is not maintained.

This may cause some issues where vulnerabilities cannot be tested for, or it may create confusion.

If practical, fixes should be provided upstream to the elazarl/goproxy library, or a fork should be maintained.

@pipeline pipeline added the as required/requested Likely to be a large undertaking, and not strictly required in many basic scenarios label Jun 26, 2021
@denandz
Copy link

denandz commented Jun 3, 2024

Ran into this same issue with glorp proxy (denandz/glorp#23) - the underlying net/http library used by both goproxy and martian cannonicalizes headers as they're get/set from the header map (https://go.dev/src/net/http/header.go?s=1433:1473)

A solution would need to figure out a way around this Golang net/http logic :-/

@pipeline
Copy link
Collaborator Author

pipeline commented Jun 5, 2024

We currently have work underway on a new library for proxying which doesn't rely on Golang's HTTP implementation. A technical proof of concept is in progress, but we don't necessarily have any timeframes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
as required/requested Likely to be a large undertaking, and not strictly required in many basic scenarios
Projects
None yet
Development

No branches or pull requests

2 participants