summaryrefslogtreecommitdiffstats
path: root/platform/web/js
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2023-07-24 08:32:44 +0200
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2023-07-24 08:57:02 +0200
commitf4713d235a498ee7805e8bd39273622e363059d0 (patch)
treeb245d8bda7956077012cea38c553578460e9052d /platform/web/js
parent6588a4a29af1621086feac0117d5d4d37af957fd (diff)
downloadredot-engine-f4713d235a498ee7805e8bd39273622e363059d0.tar.gz
[Web] Always return -1 as body length in HTTPClientWeb.
Body length cannot be reliably retrieved from the web. Reading the "content-length" value will return a meaningless value when the response is compressed, as reading will return uncompressed chunks in any case, resulting in a mismatch between the detected body size and the actual size returned by repeatedly calling read_response_body_chunk. Additionally, while "content-length" is considered a safe CORS header, "content-encoding" is not, so using the "content-encoding" to decide if "content-length" is meaningful is not an option either. We simply must accept the fact that browsers are awful when it comes to networking APIs.
Diffstat (limited to 'platform/web/js')
-rw-r--r--platform/web/js/libs/library_godot_fetch.js15
1 files changed, 0 insertions, 15 deletions
diff --git a/platform/web/js/libs/library_godot_fetch.js b/platform/web/js/libs/library_godot_fetch.js
index 1bb48bfd6a..4ef24903e3 100644
--- a/platform/web/js/libs/library_godot_fetch.js
+++ b/platform/web/js/libs/library_godot_fetch.js
@@ -50,22 +50,17 @@ const GodotFetch = {
return;
}
let chunked = false;
- let bodySize = -1;
response.headers.forEach(function (value, header) {
const v = value.toLowerCase().trim();
const h = header.toLowerCase().trim();
if (h === 'transfer-encoding' && v === 'chunked') {
chunked = true;
}
- if (h === 'content-length') {
- bodySize = parseInt(v, 10);
- }
});
obj.status = response.status;
obj.response = response;
obj.reader = response.body.getReader();
obj.chunked = chunked;
- obj.bodySize = bodySize;
},
onerror: function (id, err) {
@@ -87,7 +82,6 @@ const GodotFetch = {
reading: false,
status: 0,
chunks: [],
- bodySize: -1,
};
const id = IDHandler.add(obj);
const init = {
@@ -224,15 +218,6 @@ const GodotFetch = {
return p_buf_size - to_read;
},
- godot_js_fetch_body_length_get__sig: 'ii',
- godot_js_fetch_body_length_get: function (p_id) {
- const obj = IDHandler.get(p_id);
- if (!obj || !obj.response) {
- return -1;
- }
- return obj.bodySize;
- },
-
godot_js_fetch_is_chunked__sig: 'ii',
godot_js_fetch_is_chunked: function (p_id) {
const obj = IDHandler.get(p_id);