summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/http_util.rs9
-rw-r--r--js/fetch_test.ts10
-rwxr-xr-xtools/http_server.py3
3 files changed, 22 insertions, 0 deletions
diff --git a/cli/http_util.rs b/cli/http_util.rs
index ec035d6bf..6411a9ad6 100644
--- a/cli/http_util.rs
+++ b/cli/http_util.rs
@@ -1,11 +1,14 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
use crate::deno_error;
use crate::deno_error::DenoError;
+use crate::version;
use deno::ErrBox;
use futures::{future, Future};
use reqwest;
+use reqwest::header::HeaderMap;
use reqwest::header::CONTENT_TYPE;
use reqwest::header::LOCATION;
+use reqwest::header::USER_AGENT;
use reqwest::r#async::Client;
use reqwest::RedirectPolicy;
use url::Url;
@@ -13,8 +16,14 @@ use url::Url;
/// Create new instance of async reqwest::Client. This client supports
/// proxies and doesn't follow redirects.
pub fn get_client() -> Client {
+ let mut headers = HeaderMap::new();
+ headers.insert(
+ USER_AGENT,
+ format!("Deno/{}", version::DENO).parse().unwrap(),
+ );
Client::builder()
.redirect(RedirectPolicy::none())
+ .default_headers(headers)
.use_sys_proxy()
.build()
.unwrap()
diff --git a/js/fetch_test.ts b/js/fetch_test.ts
index 083d5333c..77cc010a8 100644
--- a/js/fetch_test.ts
+++ b/js/fetch_test.ts
@@ -220,6 +220,16 @@ testPerm({ net: true }, async function fetchInitBlobBody(): Promise<void> {
assert(response.headers.get("content-type").startsWith("text/javascript"));
});
+testPerm({ net: true }, async function fetchUserAgent(): Promise<void> {
+ const data = "Hello World";
+ const response = await fetch("http://localhost:4545/echo_server", {
+ method: "POST",
+ body: new TextEncoder().encode(data)
+ });
+ assertEquals(response.headers.get("user-agent"), `Deno/${Deno.version.deno}`);
+ await response.text();
+});
+
// TODO(ry) The following tests work but are flaky. There's a race condition
// somewhere. Here is what one of these flaky failures looks like:
//
diff --git a/tools/http_server.py b/tools/http_server.py
index dc3bbe00b..1951c9e53 100755
--- a/tools/http_server.py
+++ b/tools/http_server.py
@@ -61,6 +61,9 @@ class ContentTypeHandler(QuietSimpleHTTPRequestHandler):
if self.headers.has_key('content-type'):
self.send_header('content-type',
self.headers.getheader('content-type'))
+ if self.headers.has_key('user-agent'):
+ self.send_header('user-agent',
+ self.headers.getheader('user-agent'))
self.end_headers()
data_string = self.rfile.read(int(self.headers['Content-Length']))
self.wfile.write(bytes(data_string))