-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Proxy port in URI #1448
Comments
I experience similar issues, but the problem is not just the port. The authority part "https://reqres.in" should be in the host header and the GET method should only contain the path. Like this:
I am using Bruno version 1.7.1 |
Issue still persists in 1.10.0 Some CNTLM logs to illustrate the issue: Bruno:
Curl:
Also: The DevTools don't show anything in the network tab for these requests. Can someone acknowledge this and maybe give some insights/roadmap? |
This patched have been tested with http proxy: * on http requests * on https requests * on proxy auth with basic auth * on proxy without auth * on tinnyproxy proxy * on squid proxy It should have no effects on SOCK proxy (And I don't know if the issue exists on those config anyway) Given the following configuration * System proxy: http://system.proxy:8080 * Bruno proxy: http://explicit.proxy:9000 On http request (to http://neverssl.com): it try to send the http request to http://neverssl.com:8080 (wrong port) via the proxy http://explicit.proxy:9000 (correct proxy) On https request (to https://www.example.com): it try send a CONNECT ::1 request (can be seen with wireshark) An issue is opened on the proxy-agent repo: TooTallNate/proxy-agents#298 even tho I don't know if it's an axios issue, a proxy-agent issue or a bruno issue ```javascript import { parse as parseURL } from "url"; import axios from 'axios'; import { HttpsProxyAgent } from 'https-proxy-agent'; import { HttpProxyAgent } from 'http-proxy-agent'; class PatchedHttpsProxyAgent extends HttpsProxyAgent { async connect(req, opts) { const url = parseURL(req.path); url.port = Number(url.port) || (url.protocol.includes('https') ? 443 : 80); return super.connect(req, { ...opts, ...url }); } } function proxyObjToStr(proxyConf) { return proxyConf.protocol+"://"+proxyConf.host+":"+proxyConf.port.toString(); } function test_req(url, proxyConf, applyPatch) { let request = { method: 'get', url: url, responseType: 'string', httpAgent: new HttpProxyAgent(proxyObjToStr(proxyConf)), httpsAgent: new HttpsProxyAgent(proxyObjToStr(proxyConf)), proxy: proxyConf }; if (applyPatch) { request.proxy = {} request.httpsAgent = new PatchedHttpsProxyAgent(proxyObjToStr(proxyConf)); } const axiosInstance = axios.create(); const test_descr= url + (applyPatch ? " [patched]: " : " [current]: "); return axiosInstance(request).then(function (response) { console.log(test_descr + 'Ok'); }).catch(function (error) { console.log(test_descr + "KO"); if (error.response) { console.log({ http_head: error.response.request._header.split("\r\n")[0], path: error.response.request.path, host: error.response.request.host }); } }); } async function main() { process.env["HTTPS_PROXY"] = "http://implicit.proxy:8080"; const proxyConf = { protocol: 'http', host: 'explicit', port: 9000 }; await test_req("http://neverssl.com", proxyConf, false); await test_req("https://www.example.com/", proxyConf, false); await test_req("http://neverssl.com", proxyConf, true); await test_req("https://www.example.com/", proxyConf, true); } await main(); ``` Here the following result: ``` http://neverssl.com: KO { http_head: 'GET http://neverssl.com:8080/ HTTP/1.1', path: 'http://neverssl.com:8080/', host: 'implicit.proxy' } https://www.example.com/: KO { http_head: 'GET https://www.example.com:8080/ HTTP/1.1', path: 'https://www.example.com:8080/', host: 'implicit.proxy' } http://neverssl.com [patched]: Ok https://www.example.com/ [patched]: Ok ```
I have the same issue. I made a bug report to http-proxy lib (TooTallNate/proxy-agents#298) Please test this PR and confirm it's the same issue and that the PR fixes the bug for you. Thank you |
Great to here that :) |
Having the same issue on version 1.24.0 on Linux. Proxy is correctly contacted, but the proxy port is added to the original request when it shouldn't. |
Same issue here in Windows with version 1.26.1 |
This issue has already been fixed in latest version of Bruno |
Hello,
I try to use bruno 1.6.1 in a windows10 professional environment (mitm proxy https, Web Gateway, firewall...).
I send all my traffic through a local http proxy :
When I try to get https request :
bruno send bad, he add the proxy port to the uri hostname https://reqres.in:31280/api/users
and get error Error invoking remote method 'send-http-request': Error: socket hang up
I got the same with http request :
GET http://reqres.in:31280/api/users HTTP/1.1\r\n
I very much appreciate your app and wish it the success it deserves
Kind regards,
The text was updated successfully, but these errors were encountered: