AdguardTeam / AdguardTeam/gomitmproxy

Redirect bug - failed to round trip: net/http: HTTP/1.x transport connection broken

Đang mở
#23 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Go
Star
344
Fork
71
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Hello,

Thank you for open sourcing this excellent library!

I am starting to play with it and have noticed an issue with the [sample code](https://github.com/AdguardTeam/gomitmproxy/blob/master/examples/mitm/main.go) that suggests an issue in the library itself.

I have built the example and have it working perfectly for most sites (with a new CA I have generated and added to my trust store for TLS MitM), I have also removed the proxy authentication in the example.

I am testing it on Linux via `chromium-browser --proxy-server="https://127.0.0.1:3333"` so there's no iptables manipulation going on to add complexity.

The problem is that the proxy breaks on the login for ChatGPT `https://chat.openai.com/auth/login`

I am unsure if AdGuard itself is impacted, as I am not currently running it.

The log output from my proxy binary is as follows:

```
2024/03/04 11:51:07 7271#321 [debug] id=100022-1-1-2: handle request POST https://chat.openai.com/api/auth/signin/login-web?prompt=login
2024/03/04 11:51:07 7271#321 [error] id=100022-1-1-2: failed to round trip: net/http: HTTP/1.x transport connection broken: http: ContentLength=100 with Body length 0
2024/03/04 11:51:07 7271#321 [debug] id=100022-1-1-2: received response 502 Bad Gateway
2024/03/04 11:51:07 7271#321 [info] onResponse: https://chat.openai.com/api/auth/signin/login-web?prompt=login
2024/03/04 11:51:07 7271#321 [debug] id=100022-1-1-2: received close request
2024/03/04 11:51:07 7271#321 [debug] id=100022-1-1: closing connection due to: closing connection
2024/03/04 11:51:07 7271#321 [debug] id=100022: closing connection due to: closing connection
```

Based specifically on `failed to round trip: net/http: HTTP/1.x transport connection broken: http: ContentLength=100 with Body length 0`, what I believe is happening here is as follows:

0. The ChatGPT front end loads successfully via the proxy
1. You click login and a request is made to the login service - the front end is a React application so it is not making a full reload of the page (NOTE: Possibly other React applications may be impacted - I will update the issue if I find more)
2. Because a new request has not been made, the `body` is now empty because the http.request body is a buffer and once it is read in the first call, the buffer becomes empty and there is no body content to send in redirect call.

@ameshkov if you could please advise I would greatly appreciate it, thank you!

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.