Open jeffreyvdhondel opened 4 years ago
The URL https://pictures.vwe.nl
results in a 403 (Forbidden Acess), if you open in a browser.
Correct me, if I misinterpreted your issue.
Yes thats correct i would like to do a.statuscode to know the http status code of the request.
ConnectionReset: Connection reset by peer (os error 104)
error: Uncaught ConnectionReset: Connection reset by peer (os error 104)
at unwrapResponse (rt/10_dispatch_json.js:24:13)
at sendAsync (rt/10_dispatch_json.js:75:12)
at async TLSListener.accept (rt/40_tls.js:42:19)
at async Server.acceptConnAndIterateHttpRequests
at async MuxAsyncIterator.callIteratorNext
@bartlomieju
This problem is from rustls
, This can be closed. (May add better error handler for this)
This error looks to be solved in 1.4:
fetch('https://pictures.vwe.nl').then(console.log)
Promise { <pending> }
Response {
_bodySource: ReadableStream { locked: false },
_stream: null,
url: "https://pictures.vwe.nl",
statusText: "Forbidden",
status: 403,
headers: Headers { content-type: text/html, server: Microsoft-IIS/10.0, x-powered-by: ASP.NET, date: Thu, 17 Sep 2020 09:58:52 GMT, content-length: 1233 },
redirected: false,
type: "default"
}
Reopening because we're getting reports of a regression in Discord since at least 1.9, possibly earlier https://discord.com/channels/684898665143206084/689420767620104201/852181010614976533
This error looks to be solved in 1.4:
fetch('https://pictures.vwe.nl').then(console.log) Promise { <pending> } Response { _bodySource: ReadableStream { locked: false }, _stream: null, url: "https://pictures.vwe.nl", statusText: "Forbidden", status: 403, headers: Headers { content-type: text/html, server: Microsoft-IIS/10.0, x-powered-by: ASP.NET, date: Thu, 17 Sep 2020 09:58:52 GMT, content-length: 1233 }, redirected: false, type: "default" }
I tried running the same on deno 1.4.0 and I am getting the same error.
deno 1.4.0
v8 8.7.75
typescript 4.0.2
deno run -A --log-level=debug test.ts
Deno isolate init with snapshots.
rust:shared_queue:reset
DEBUG JS - cwd /home/user/Projects/deno/import_js
DEBUG JS - args []
main_module file:///home/user/Projects/deno/import_js/test.ts
fetch_source_file specifier: file:///home/user/Projects/deno/import_js/test.ts maybe_referrer: None
⚠️️ Granted read access to "/home/user/Projects/deno/import_js/test.ts"
compiled filename: "/home/user/.cache/deno/gen/file/home/user/Projects/deno/import_js/test.ts.js"
register_complete file:///home/user/Projects/deno/import_js/test.ts
DEBUG JS - sendAsync op_fetch
⚠️️ Granted network access to "https://api.sl.se/"
Before fetch https://api.sl.se
starting new connection: https://api.sl.se/
resolving host="api.sl.se"
connecting to 194.68.78.66:443
connected to 194.68.78.66:443
No cached session for DNSNameRef("api.sl.se")
Not resuming any session
rust:shared_queue:pre-push: op=8, off=812, end=983, len=171, aligned_end=984
rust:shared_queue:push: num_records=1, num_shifted_off=0, head=984
DEBUG JS - sendSync op_apply_source_map
DEBUG JS - sendSync op_apply_source_map
DEBUG JS - sendSync op_apply_source_map
error: Uncaught Http: error sending request for url (https://api.sl.se/): error trying to connect: Connection reset by peer (os error 104)
at unwrapResponse (deno:cli/rt/10_dispatch_json.js:24:13)
at sendAsync (deno:cli/rt/10_dispatch_json.js:75:12)
at async fetch (deno:cli/rt/26_fetch.js:279:29)
I encountered this today as well:
% deno
Deno 1.11.1
exit using ctrl+d or close()
> await fetch("https://www.co.walton.fl.us/523/Morrison-Springs");
Uncaught TypeError: error sending request for url (https://www.co.walton.fl.us/523/Morrison-Springs): error trying to connect: Connection reset by peer (os error 54)
at deno:core/core.js:86:46
at unwrapOpResult (deno:core/core.js:106:13)
at async mainFetch (deno:extensions/fetch/26_fetch.js:228:14)
and here's the beginning of the verbose curl
output (I'm truncating it before the headers):
% curl -s -v -D - -o /dev/null "https://www.co.walton.fl.us/523/Morrison-Springs"
* Trying 208.90.188.209...
* TCP_NODELAY set
* Connected to www.co.walton.fl.us (208.90.188.209) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/cert.pem
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [233 bytes data]
* TLSv1.2 (IN), TLS handshake, Server hello (2):
{ [85 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [3053 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [333 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-SHA384
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: CN=www.co.walton.fl.us
* start date: Sep 23 00:00:00 2020 GMT
* expire date: Sep 23 23:59:59 2021 GMT
* subjectAltName: host "www.co.walton.fl.us" matched cert's "www.co.walton.fl.us"
* issuer: C=GB; ST=Greater Manchester; L=Salford; O=Sectigo Limited; CN=Sectigo RSA Domain Validation Secure Server CA
* SSL certificate verify ok.
> GET /523/Morrison-Springs HTTP/1.1
> Host: www.co.walton.fl.us
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
This seemed odd to me:
ALPN, server did not agree to a protocol
but I'm guessing it just means the server didn't accept http/2?
As I said before, This problem is not about Deno itself.
Cargo.toml:
[dependencies]
reqwest = { version = "0.11", default-features = false, features = ["rustls-tls", "json"] }
tokio = { version = "1", features = ["full"] }
main.rs
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let resp = reqwest::get("https://www.co.walton.fl.us/523/Morrison-Springs")
.await?
.text()
.await?;
println!("{:#?}", resp);
Ok(())
}
output:
Error: reqwest::Error { kind: Request, url: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("www.co.walton.fl.us")), port: None, path: "/523/Morrison-Springs", query: None, fragment: None }, source: hyper::Error(Connect, Custom { kind: Other, error: Os { code: 104, kind: ConnectionReset, message: "Connection reset by peer" } }) }
There's no problem if you use native-tls
instead of rustls
Hi
I had a long running (ie several hours) simple Deno program that just loops a fetch
request every few minutes to look for any new articles at Hacker News. This ran for several hours with out issue, and then stopped with the error below.
Not sure if it is relevant or related to the similar errors being reported on this issues - so just in case it is of help.
Simon
error: Uncaught (in promise) TypeError: error sending request for url (https://hacker-news.firebaseio.com/v0/item/28318840.json): connection error: Connection reset by peer (os error 54)
at deno:core/01_core.js:106:46
at unwrapOpResult (deno:core/01_core.js:126:13)
at async mainFetch (deno:ext/fetch/26_fetch.js:265:14)
Extract of some of the code that cased the above error:
const baseURL = "https://hacker-news.firebaseio.com/v0";
async function getItemByID(id: number): Promise<Item | undefined> {
const endpoint = `${baseURL}/item/${id}.json`;
const res = await fetch(endpoint);
const item = await res.json();
return item ?? undefined;
}
while (true) {
const item = await getItemByID(id);
// If item does not exists - pause
if (!item) {
await delay(60 * 1000);
continue;
}
// NB rest of code not shown as probably not relevant
Deno Version:
deno 1.13.2 (release, aarch64-apple-darwin)
v8 9.3.345.11
typescript 4.3.5
OS: Apple macOS 'Big Sur' version 11.5.2
has anyone had a proper solution on this?
actually trying this from postman code snippet: js - fetch
TypeError: error sending request for url (https://3rd-party.api/Login): error trying to connect: Connection reset by peer (os error 54) at async mainFetch (deno:ext/fetch/26_fetch.js:259:14)
actually trying this from postman code snippet: js - fetch but still getting the error above.
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"AccountId": 1234,
"BranchId": 1234,
"UserName": "test",
"Password": "test"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://3rd-party.api/Login", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
appreciate if anyone can help thank you OS: MacOS Monterey Version: 12.2.1
I have the same problem
error: Uncaught (in promise) TypeError: error sending request for url (https://dynamodb.ap-east-1.amazonaws.com/): connection error: Connection reset by peer (os error 104)
at async mainFetch (deno:ext/fetch/26_fetch.js:280:14)
at async fetch (deno:ext/fetch/26_fetch.js:490:9)
Deno Version:
#deno -V
deno 1.20.4
centos8
Verified:
deno
Deno 1.30.3
exit using ctrl+d, ctrl+c, or close()
REPL is running with all permissions allowed.
To specify permissions, run `deno repl` with allow flags.
> await fetch("https://www.co.walton.fl.us/523/Morrison-Springs");
Uncaught TypeError: error sending request for url (https://www.co.walton.fl.us/523/Morrison-Springs): error trying to connect: Connection reset by peer (os error 104)
at async mainFetch (internal:ext/fetch/26_fetch.js:267:14)
at async fetch (internal:ext/fetch/26_fetch.js:491:9)
at async <anonymous>:2:1
I'm having the same issue with firebase. (exact same code works fine with node) Code snippet:
const db = getFirestore(app);
console.log(db);
const ref = db.collection('xyzzy').limit(10);
ref.onSnapshot((snapshot) => {
snapshot.docs.forEach((doc) => {
console.log(doc.data()['name']);
});
},
(error) => {
console.log(error);
});
Throws as follows:
error: Uncaught TypeError: error sending request for url (http://firestore.googleapis.com:443/google.firestore.v1.Firestore/Listen): connection error: Connection reset by peer (os error 54)
at async mainFetch (ext:deno_fetch/26_fetch.js:266:12)
at async fetch (ext:deno_fetch/26_fetch.js:490:7)
at async node:http2:144:28
As I mentioned, exact same code works fine with node.
The issue is still unsolved in:
deno 1.37.2 (release, aarch64-apple-darwin) v8 11.8.172.13 typescript 5.2.2
Most external https URLs I try to fetch result in the following error:
Uncaught TypeError: error sending request for url (https://[redacted]): error trying to connect: Connection reset by peer (os error 54)
at async mainFetch (ext:deno_fetch/26_fetch.js:277:12)
at async fetch (ext:deno_fetch/26_fetch.js:504:7)
at async <anonymous>:2:14
Curl says:
* Connected to [redacted] port 443 (#0)
* ALPN: offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/cert.pem
* CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-SHA384
* ALPN: server did not agree on a protocol. Uses default.
* Server certificate:
* subject: CN=*.[redacted]
* start date: Nov 15 07:21:50 2022 GMT
* expire date: Dec 17 07:21:49 2023 GMT
* subjectAltName: host "[redacted]" matched cert's "[redacted]"
* issuer: C=BE; O=GlobalSign nv-sa; CN=AlphaSSL CA - SHA256 - G2
* SSL certificate verify ok.
Almost always I try to start a project with Deno I end up with this, for the past two years, making it impossible to use Deno or Deno Deploy.
The same fetch works in Node, Bun, and literally every other runtime/language I tried.
@louis77, can you provide a snippet? I'm unsure of your use case, but are you aware of Deno.HttpClient
?
@iuioiua I've tried with Deno.HttpClient, but it has the same problem. There is nothing wrong with the certificate of the remote, it seems to be a TLS issue that Deno struggles with.
It is just a single line of fetch:
const resp = await fetch(myUrl, {
headers: {
'Authorization': `Basic ${btoa('[user:pass]')}`,
},
})
With that line, I immediately get the os error 54
exception as reported by the other commenters on this issue. Since I have no "custom certificate", Deno.httpClient did not make any change here.
Unfortunately I can't share the remote URL here, but if you are on Discord or somewhere I'd be glad to send you the full fetch line so you can test it on your side.
I found this same error, and got stuck since I am not able to connect to the provider's API. Exactly same fetch work perfectly fine with Node:
deno 1.37.2 (release, aarch64-apple-darwin) v8 11.8.172.13 typescript 5.2.2
error:
cause: TypeError: error sending request for url (https://[redacted]): error trying to connect: Connection reset by peer (os error 54)
at async Promise.all (index 0)
at async node:http:432:26
curl -v:
* Connected to [redacted] port 443 (#0)
* ALPN: offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/cert.pem
* CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-SHA384
* ALPN: server did not agree on a protocol. Uses default.
* Server certificate:
* subject: [redacted]
* start date: Sep 22 07:33:14 2023 GMT
* expire date: Sep 21 07:33:13 2024 GMT
* subjectAltName: host [redacted] matched cert's [redacted]
* issuer: [redacted]
* SSL certificate verify ok.
Came across the same issue yesterday. App has been operating fine then yesterday with no apparent changes, started seeing the same error for calls to external APIs and APIs from apps running in docker on the same machine.
I am getting this in an import statement:
import { config } from "https://deno.land/x/dotenv@v3.2.2/mod.ts"
error: Import 'https://deno.land/x/dotenv@v3.2.2/mod.ts' failed: error sending request for url (https://deno.land/x/dotenv@v3.2.2/mod.ts): error trying to connect: Connection reset by peer (os error 104)
let a = await fetch('https://pictures.vwe.nl'); console.log(a)
Returns "Error trying to connect: Connection reset by peer (os error 54)"
deno --version