mirror of
https://github.com/librespeed/speedtest.git
synced 2026-08-04 14:48:38 +00:00
fix upload: check HTTP status in onload, document server body size limit
- speedtest_worker.js: xhr.upload.onload now checks xhr.status before restarting the upload stream. Non-2xx responses (e.g. HTTP 413 from undersized client_max_body_size) are treated as failures instead of inflating upload speed measurements. - doc.md: added explicit nginx/Apache/IIS configuration examples for client_max_body_size / LimitRequestBody to prevent HTTP 413 errors on the 20MB upload test blobs.
This commit is contained in:
parent
7e10d1eb96
commit
1b3c0ac9c4
2 changed files with 28 additions and 3 deletions
14
doc.md
14
doc.md
|
|
@ -60,6 +60,20 @@ Let's install the speed test.
|
|||
|
||||
Put all files on your web server via FTP or by copying them directly. You can install it in the root, or in a subdirectory.
|
||||
|
||||
**Web server upload limit:** The upload test sends POST requests up to 20 MB (configurable with `xhr_ul_blob_megabytes`). Without proper configuration, the server will reject these with HTTP 413, causing wildly inaccurate upload speeds. Configure your web server to accept large request bodies:
|
||||
|
||||
Nginx:
|
||||
```
|
||||
client_max_body_size 128m;
|
||||
```
|
||||
|
||||
Apache:
|
||||
```
|
||||
LimitRequestBody 134217728
|
||||
```
|
||||
|
||||
IIS: Set `maxAllowedContentLength` in `web.config`.
|
||||
|
||||
__Important:__ The speed test needs write permissions in the installation folder!
|
||||
|
||||
#### ipinfo.io
|
||||
|
|
|
|||
|
|
@ -502,9 +502,20 @@ function ulTest(done) {
|
|||
prevLoaded = event.loaded;
|
||||
}.bind(this);
|
||||
xhr[i].upload.onload = function() {
|
||||
// this stream sent all the garbage data, start again
|
||||
tverb("ul stream finished " + i);
|
||||
testStream(i, 0);
|
||||
// check HTTP status - non-2xx means server rejected the request (e.g. 413 body too large)
|
||||
if (xhr[i].status >= 200 && xhr[i].status < 300) {
|
||||
// this stream sent all the garbage data, start again
|
||||
tverb("ul stream finished " + i);
|
||||
testStream(i, 0);
|
||||
} else {
|
||||
tverb("ul stream failed with HTTP " + xhr[i].status + " " + i);
|
||||
if (settings.xhr_ignoreErrors === 0) failed = true; //abort
|
||||
try {
|
||||
xhr[i].abort();
|
||||
} catch (e) {}
|
||||
delete xhr[i];
|
||||
if (settings.xhr_ignoreErrors === 1) testStream(i, 0); //restart stream
|
||||
}
|
||||
}.bind(this);
|
||||
xhr[i].upload.onerror = function() {
|
||||
tverb("ul stream failed " + i);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue