1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-22 15:06:54 -05:00

fix: redirect in --location relative fetch (#9150)

This commit is contained in:
Luca Casonato 2021-01-18 13:59:29 +01:00 committed by GitHub
parent 12577f2d9a
commit 7a30d1a3d8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 13 additions and 2 deletions

View file

@ -0,0 +1,2 @@
const response = await fetch("/");
console.log(response.url);

View file

@ -0,0 +1 @@
[WILDCARD]http://localhost:4545/

View file

@ -2662,6 +2662,12 @@ itest!(_080_deno_emit_permissions {
exit_code: 1,
});
itest!(_081_location_relative_fetch_redirect {
args: "run --location http://127.0.0.1:4546/ --allow-net 081_location_relative_fetch_redirect.ts",
output: "081_location_relative_fetch_redirect.ts.out",
http_server: true,
});
itest!(js_import_detect {
args: "run --quiet --reload js_import_detect.ts",
output: "js_import_detect.ts.out",

View file

@ -1373,7 +1373,7 @@
redirected,
rid: fetchResponse.bodyRid,
status: fetchResponse.status,
url,
url: fetchResponse.url,
});
const response = new Response(responseBody, responseInit);
@ -1404,7 +1404,7 @@
!redirectUrl.startsWith("http://") &&
!redirectUrl.startsWith("https://")
) {
redirectUrl = new URL(redirectUrl, url).href;
redirectUrl = new URL(redirectUrl, fetchResponse.url).href;
}
url = redirectUrl;
redirected = true;

View file

@ -227,6 +227,7 @@ pub async fn op_fetch_send(
//debug!("Fetch response {}", url);
let status = res.status();
let url = res.url().to_string();
let mut res_headers = Vec::new();
for (key, val) in res.headers().iter() {
let key_string = key.to_string();
@ -261,6 +262,7 @@ pub async fn op_fetch_send(
"status": status.as_u16(),
"statusText": status.canonical_reason().unwrap_or(""),
"headers": res_headers,
"url": url,
"responseRid": rid,
}))
}