Doesn't work with usefixie and quotaguard with `invalidProxyResponse `
MihaelIsaev opened this issue · 3 comments
I tried to use it with usefixie.com and quotaguard.com and getting invalidProxyResponse
error.
I tried to set breakpoints to debug the issue and see that under the hood these services returns 400 Bad Request
let auth = HTTPClient.Authorization.basic(username: "fixie", password: "___")
let proxyConfig = HTTPClient.Configuration.Proxy.server(host: "___.usefixie.com", port: 80, authorization: auth)
app.http.client.configuration.proxy = proxyConfig
//app.http.client.configuration.redirectConfiguration = .follow(max: 100, allowCycles: true)
do {
let res = try app.client.get(URI("https://ip.quotaguard.com/")).wait()
app.logger.critical("\(res.body?.string)")
} catch {
app.logger.critical("Error: \(error)") // getting HTTPClientError.invalidProxyResponse here
}
at the same time with nodejs everything works fine
var http = require('http');
function buildAuthHeader(user, pass) {
return 'Basic ' + new Buffer(user + ':' + pass).toString('base64');
}
proxy = '___.usefixie.com';
proxy_port = 80;
host = 'ip.quotaguard.com';
url = 'https://ip.quotaguard.com';
user = 'fixie';
pass = '___';
var options = {
port: proxy_port,
host: proxy,
path: url,
headers: {
Host: host,
'Proxy-Authorization': buildAuthHeader(user, pass),
}
};
http.get(options, function(res) {
console.log("StatusCode: " + res.statusCode + " Message: " + res.statusMessage);
let chunks = []
res.on('data', chunk => chunks.push(chunk))
res.on('end', () => {
console.log('DONE', Buffer.concat(chunks).toString('utf8'))
})
}).end();
Can you use Wireshark or something similar to capture the request to the proxy and then provide it here?
@Lukasa thanks for pointing me to Wireshark, I completely forgot about it!
I realized that Host
header is missing which causes 400 Bad Request: missing required Host header
I added missing header into HTTP1ProxyConnectionHandler
and now it works like a charm!
@Lukasa thank you very much for merging it that fast! Need it in production asap, could you please tag it?