diff --git a/files/en-us/glossary/base64/index.md b/files/en-us/glossary/base64/index.md index 7912c4d13afbd3f..b14a0c657b977e4 100644 --- a/files/en-us/glossary/base64/index.md +++ b/files/en-us/glossary/base64/index.md @@ -6,21 +6,22 @@ page-type: glossary-definition {{GlossarySidebar}} -**Base64** is a group of similar [binary-to-text encoding](https://en.wikipedia.org/wiki/Binary-to-text_encoding) schemes that represent binary data in an {{glossary("ASCII")}} string format by translating it into a radix-64 representation. The term _Base64_ originates from a specific [MIME content transfer encoding](https://en.wikipedia.org/wiki/MIME#Content-Transfer-Encoding). +**Base64** is a group of similar [binary-to-text encoding](https://en.wikipedia.org/wiki/Binary-to-text_encoding) schemes that represent binary data in an {{glossary("ASCII")}} string format by transforming it into a radix-64 representation. The term _Base64_ originates from a specific [MIME content transfer encoding](https://en.wikipedia.org/wiki/MIME#Content-Transfer-Encoding). -When the term "Base64" is used on its own to refer to a specific algorithm, it typically refers to the version of Base64 outlined in [RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648), section 4, which uses the following alphabet to represent the radix-64 digits, alongside `=` as a padding character: +When the term "Base64" is used on its own to refer to a specific {{glossary("algorithm")}}, it typically refers to the version of Base64 outlined in [RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648), section 4, which uses the following alphabet to represent the radix-64 digits, alongside `=` as a padding character: ```plain ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ ``` -A common variant is "Base64 URL safe", which omits the padding and replaces `+/` with `-_` to avoid characters that might cause problems in URL path segments or query parameters. +A common variant is "Base64 URL safe", which omits the padding and replaces `+/` with `-_` to avoid characters that might cause problems in +{{glossary("URL")}} path segments or query parameters. Base64 encoding schemes are commonly used to encode binary data for storage or transfer over media that can only deal with ASCII text (or some superset of ASCII that still falls short of accepting arbitrary binary data). This ensures that the data remains intact without modification during transport. Common applications of Base64 include: - Email via [MIME](https://en.wikipedia.org/wiki/MIME) - Storing complex data in [XML](/en-US/docs/Web/XML) -- Encoding binary data so it can be included in a [`data:` URL](/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) +- Encoding binary data so that it can be included in a [`data:` URL](/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) ## Encoded size increase @@ -35,13 +36,13 @@ Browsers natively provide two JavaScript functions for decoding and encoding Bas - [`btoa`](/en-US/docs/Web/API/btoa): creates a Base64-encoded ASCII string from a string of binary data ("btoa" should be read as "binary to ASCII"). - [`atob`](/en-US/docs/Web/API/atob): decodes a Base64-encoded string ("atob" should be read as "ASCII to binary"). -> **Note:** Base64 is a binary encoding rather than a text encoding, but `btoa` and `atob` were added to the web platform before it supported binary data types. As a result, the two functions use strings to represent binary data, with the code point of each character representing the value of each byte. This has led to a common misconception that `btoa` can be used to encode arbitrary text data — for example, creating a Base64 `data:` URL of a text or HTML document. +> **Note:** Base64 is a binary encoding rather than a text encoding, but `btoa` and `atob` were added to the web platform before it supported binary data types. As a result, the two functions use strings to represent binary data, with the {{glossary("code point")}} of each character representing the value of each byte. This has led to a common misconception that `btoa` can be used to encode arbitrary text data — for example, creating a Base64 `data:` URL of a text or HTML document. > > However, the byte-to-code-point correspondence only reliably holds true for code points up to `0x7f`. Furthermore, code points over `0xff` will cause `btoa` to throw an error due to exceeding the maximum value for 1 byte. The next section details how to work around this limitation when encoding arbitrary Unicode text. ## The "Unicode Problem" -Since `btoa` interprets the code points of its input string as byte values, calling `btoa` on a string will cause a "Character Out Of Range" exception if a character's code point exceeds `0xff`. For use cases where you need to encode arbitrary Unicode text, it is necessary to first convert the string to its constituent bytes in UTF-8, and then encode the bytes. +Since `btoa` interprets the code points of its input string as byte values, calling `btoa` on a string will cause a "Character Out Of Range" exception if a character's code point exceeds `0xff`. For use cases where you need to encode arbitrary Unicode text, it is necessary to first convert the string to its constituent bytes in {{glossary("UTF-8")}}, and then encode the bytes. The simplest solution is to use `TextEncoder` and `TextDecoder` to convert between UTF-8 and single-byte representations of the string: @@ -89,3 +90,12 @@ async function dataUrlToBytes(dataUrl) { await bytesToBase64DataUrl(new Uint8Array([0, 1, 2])); // "data:application/octet-stream;base64,AAEC" await dataUrlToBytes("data:application/octet-stream;base64,AAEC"); // Uint8Array [0, 1, 2] ``` + +## See Also + +- JavaScript APIs: + - [btoa() global function](/en-US/docs/Web/API/btoa) + - [atob() global function](/en-US/docs/Web/API/atob) +- [Data URLs](/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) +- [Base64](https://en.wikipedia.org/wiki/Base64) on Wikipedia +- Base64 Algorithm described in [RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648) diff --git a/files/en-us/glossary/camel_case/index.md b/files/en-us/glossary/camel_case/index.md index b629166176423d8..a79777fd7613f82 100644 --- a/files/en-us/glossary/camel_case/index.md +++ b/files/en-us/glossary/camel_case/index.md @@ -18,6 +18,6 @@ Camel case is the most popular convention in JavaScript, Java, and various other ## See also -- [Snake case](/en-US/docs/Glossary/Snake_case) -- [Kebab case](/en-US/docs/Glossary/Kebab_case) +- {{Glossary("Snake_case", "Snake Case")}} +- {{Glossary("Kebab_case", "Kebab Case")}} - [typescript-eslint rule: `naming-convention`](https://typescript-eslint.io/rules/naming-convention/) diff --git a/files/en-us/learn/server-side/first_steps/website_security/index.md b/files/en-us/learn/server-side/first_steps/website_security/index.md index b7164bcc75b72ab..42bd9f16a49d31c 100644 --- a/files/en-us/learn/server-side/first_steps/website_security/index.md +++ b/files/en-us/learn/server-side/first_steps/website_security/index.md @@ -49,7 +49,7 @@ XSS is a term used to describe a class of attacks that allow an attacker to inje The XSS vulnerabilities are divided into _reflected_ and _persistent_, based on how the site returns the injected scripts to a browser. - A _reflected_ XSS vulnerability occurs when user content that is passed to the server is returned _immediately_ and _unmodified_ for display in the browser. Any scripts in the original user content will be run when the new page is loaded. - For example, consider a site search function where the search terms are encoded as URL parameters, and these terms are displayed along with the results. An attacker can construct a search link that contains a malicious script as a parameter (e.g., `http://developer.mozilla.org?q=beer`) and email it to another user. If the target user clicks this "interesting link", the script will be executed when the search results are displayed. As discussed earlier, this gives the attacker all the information they need to enter the site as the target user, potentially making purchases as the user or sharing their contact information. + For example, consider a site search function where the search terms are encoded as URL parameters, and these terms are displayed along with the results. An attacker can construct a search link that contains a malicious script as a parameter (e.g., `https://developer.mozilla.org?q=beer`) and email it to another user. If the target user clicks this "interesting link", the script will be executed when the search results are displayed. As discussed earlier, this gives the attacker all the information they need to enter the site as the target user, potentially making purchases as the user or sharing their contact information. - A _persistent_ XSS vulnerability occurs when the malicious script is _stored_ on the website and then later redisplayed unmodified for other users to execute unwittingly. For example, a discussion board that accepts comments that contain unmodified HTML could store a malicious script from an attacker. When the comments are displayed, the script is executed and can send to the attacker the information required to access the user's account. This sort of attack is extremely popular and powerful, because the attacker might not even have any direct engagement with the victims. diff --git a/files/en-us/mdn/community/issues/index.md b/files/en-us/mdn/community/issues/index.md index 238b28f808dfa58..530642213dd102a 100644 --- a/files/en-us/mdn/community/issues/index.md +++ b/files/en-us/mdn/community/issues/index.md @@ -82,7 +82,7 @@ Ensure sections follow the order defined in the CSS property template ### Description -The CSS property page template is defined [here](https://developer.mozilla.org/en-US/docs/MDN/Writing_guidelines/Page_structures/Page_types/CSS_property_page_template). +The CSS property page template is defined [here](/en-US/docs/MDN/Writing_guidelines/Page_structures/Page_types/CSS_property_page_template). The task list in this issue will be used to compare the documented CSS properties with the template and track changes to the property pages for compliance. ### List of pages checked diff --git a/files/en-us/mozilla/firefox/releases/2/updating_extensions/index.md b/files/en-us/mozilla/firefox/releases/2/updating_extensions/index.md index 23fd6c6fd78835b..18b4b1ffe8cff7f 100644 --- a/files/en-us/mozilla/firefox/releases/2/updating_extensions/index.md +++ b/files/en-us/mozilla/firefox/releases/2/updating_extensions/index.md @@ -38,6 +38,6 @@ Be sure to test your extension carefully on Firefox 2 before you release it to t ## Step 4: Release -Update your extension's entry on [http://addons.mozilla.org](https://addons.mozilla.org). This will ensure that users can find it. +Update your extension's entry on [https://addons.mozilla.org](https://addons.mozilla.org). This will ensure that users can find it. In addition, if your extension provides an [`updateURL`](/en-US/Install_Manifests#updateurl) in the install manifest, be sure to update the update manifest so that the new version of your extension can be found automatically by Firefox. By doing this, the first time the user runs your extension after upgrading to Firefox 2, Firefox can offer to automatically install it for them. diff --git a/files/en-us/mozilla/firefox/releases/3.5/updating_extensions/index.md b/files/en-us/mozilla/firefox/releases/3.5/updating_extensions/index.md index ff1a43ee6d7aa73..79be90c917d5d50 100644 --- a/files/en-us/mozilla/firefox/releases/3.5/updating_extensions/index.md +++ b/files/en-us/mozilla/firefox/releases/3.5/updating_extensions/index.md @@ -122,7 +122,7 @@ Firefox 3.5 closes a security hole that made it possible to use remote chrome. T Previously, it was possible to get a load context from a request by querying various docShell APIs. In particular, it was a common practice to use `notificationCallbacks.getInterface(nsIDOMWindow)` to get the window object associated with the load. While the older approach may work in some circumstances, it is not recommended to use it anymore ([details](https://bugzil.la/457153#c16)). -This correct and reliable way to do this is to use an `nsILoadContext` (see the [interface definition](http://mxr.mozilla.org/mozilla-central/source/docshell/base/nsILoadContext.idl) on mxr). +This correct and reliable way to do this is to use an `nsILoadContext` (see the [interface definition](https://mxr.mozilla.org/mozilla-central/source/docshell/base/nsILoadContext.idl) on mxr). From JavaScript, you do it like this: diff --git a/files/en-us/web/api/document_object_model/examples/index.md b/files/en-us/web/api/document_object_model/examples/index.md index 591c3dd6cdf985b..5fec70d40b78b99 100644 --- a/files/en-us/web/api/document_object_model/examples/index.md +++ b/files/en-us/web/api/document_object_model/examples/index.md @@ -52,14 +52,16 @@ The following example shows the use of the `height` and `width` properties along

Image 1: no height, width, or style - +

Image 2: height="50", width="500", but no style

@@ -68,7 +70,7 @@ The following example shows the use of the `height` and `width` properties along Image 3: no height, width, but style="height: 50px; width: 500px;"

diff --git a/files/en-us/web/api/element/innerhtml/index.md b/files/en-us/web/api/element/innerhtml/index.md index eaa05883fbe3048..d6a6adee7aafa9a 100644 --- a/files/en-us/web/api/element/innerhtml/index.md +++ b/files/en-us/web/api/element/innerhtml/index.md @@ -52,7 +52,7 @@ This lets you look at the HTML markup of the element's content nodes. Setting the value of `innerHTML` lets you easily replace the existing contents of an element with new content. -> **Note:** This is a [security risk](#security_considerations) if the string to be inserted might contain potentially malicious content. +> **Warning:** This is a [security risk](#security_considerations) if the string to be inserted might contain potentially malicious content. > When inserting user-supplied data you should always consider using a sanitizer library, in order to sanitize the content before it is inserted. For example, you can erase the entire contents of a document by clearing the contents of the document's {{domxref("Document.body", "body")}} attribute: diff --git a/files/en-us/web/api/file_api/using_files_from_web_applications/index.md b/files/en-us/web/api/file_api/using_files_from_web_applications/index.md index 61bf7a247101995..4c0b7231e2729ad 100644 --- a/files/en-us/web/api/file_api/using_files_from_web_applications/index.md +++ b/files/en-us/web/api/file_api/using_files_from_web_applications/index.md @@ -436,7 +436,7 @@ function FileUpload(img, file) { ); xhr.open( "POST", - "http://demos.hacks.mozilla.org/paul/demos/resources/webservices/devnull.php", + "https://demos.hacks.mozilla.org/paul/demos/resources/webservices/devnull.php", ); xhr.overrideMimeType("text/plain; charset=x-user-defined-binary"); reader.onload = (evt) => { diff --git a/files/en-us/web/api/html_dom_api/html-dom-hierarchy.svg b/files/en-us/web/api/html_dom_api/html-dom-hierarchy.svg index 0f70e0f07609837..6899873b710386a 100644 --- a/files/en-us/web/api/html_dom_api/html-dom-hierarchy.svg +++ b/files/en-us/web/api/html_dom_api/html-dom-hierarchy.svg @@ -1 +1 @@ -EventTargetNodeElementHTMLElementHTMLAnchorElementHTMLAreaElementHTMLAnchorElementHTMLBRElementHTMLTrackElementHTMLUListElementHTMLUnknownElementHTMLVideoElement \ No newline at end of file +EventTargetNodeElementHTMLElementHTMLAnchorElementHTMLAreaElementHTMLAnchorElementHTMLBRElementHTMLTrackElementHTMLUListElementHTMLUnknownElementHTMLVideoElement diff --git a/files/en-us/web/api/html_drag_and_drop_api/recommended_drag_types/index.md b/files/en-us/web/api/html_drag_and_drop_api/recommended_drag_types/index.md index 27e552ed26c195f..e6b4d8a94184b99 100644 --- a/files/en-us/web/api/html_drag_and_drop_api/recommended_drag_types/index.md +++ b/files/en-us/web/api/html_drag_and_drop_api/recommended_drag_types/index.md @@ -43,7 +43,7 @@ To drag multiple links, separate each link inside the `text/uri-list` data with For example, this sample `text/uri-list` data contains two links and a comment: ```plain -http://www.mozilla.org +https://www.mozilla.org #A second link http://www.example.com ``` @@ -59,7 +59,7 @@ const url = event.dataTransfer.getData("URL"); You may also see data with the Mozilla-specific type `text/x-moz-url`. If it appears, it should appear before the `text/uri-list` type. It holds the URLs of links followed by their titles, separated by a linebreak. For example: ```plain -http://www.mozilla.org +https://www.mozilla.org Mozilla http://www.example.com Example diff --git a/files/en-us/web/api/idbfactory/databases/index.md b/files/en-us/web/api/idbfactory/databases/index.md index 123cf46e8cddca7..93d962a93db8217 100644 --- a/files/en-us/web/api/idbfactory/databases/index.md +++ b/files/en-us/web/api/idbfactory/databases/index.md @@ -8,9 +8,9 @@ browser-compat: api.IDBFactory.databases {{ APIRef("IndexedDB") }} {{AvailableInWorkers}} -The **`databases`** method of the {{domxref("IDBFactory")}} interface returns a list representing all the available databases, including their names and versions. +The **`databases`** method of the {{domxref("IDBFactory")}} interface returns a {{jsxref("Promise")}} that fulfills with an array of objects containing the name and version of all the available databases. -> **Note:** This method is introduced in a draft of a specifications and browser compatibility is limited. +This is is a snapshot of the databases, intended primarily to allow web applications to check what databases have been created — in order to, for example, clean up databases created by earlier versions of application code. ## Syntax @@ -20,31 +20,115 @@ databases() ### Parameters -The method does not take in any parameters. +None. ### Return value -A promise that resolves either to an error or a list of dictionaries, each with two elements, `name` and `version`: +A {{jsxref("Promise")}} that fulfills with an an array of objects representing a snapshot of the available databases (or rejects with the error/exceptions below). + +Each array object has the following properties: - `name` - - : The database name. + - : A database name. - `version` - : The database version. +Note that the sequence on the returned objects is undefined. + ### Exceptions - `SecurityError` {{domxref("DOMException")}} - - : Thrown if the method is called from an [opaque origin](https://stackoverflow.com/questions/42239643/when-do-browsers-send-the-origin-header-when-do-browsers-set-the-origin-to-null/42242802#42242802). + + - : Thrown if the method is called from an [opaque origin](https://stackoverflow.com/questions/42239643/when-do-browsers-send-the-origin-header-when-do-browsers-set-the-origin-to-null/42242802#42242802) or the user has disabled storage. + +- `UnknownError` {{domxref("DOMException")}} + - : Thrown if the set of available databases cannot be determined for any reason. ## Examples +### Create and list databases + +This example creates/opens a number of databases. +On successful initialization of each database it lists all the available databases. + +```html hidden +

+```
+
+```js hidden
+const logElement = document.querySelector("#log");
+function log(text) {
+  logElement.innerText = `${logElement.innerText}${text}\n`;
+  logElement.scrollTop = logElement.scrollHeight;
+}
+```
+
+```css hidden
+#log {
+  height: 240px;
+  overflow: scroll;
+  padding: 0.5rem;
+  border: 1px solid black;
+}
+```
+
+#### JavaScript
+
+First we define the function that is used to get and log the available databases.
+This awaits on the promise returned by `indexedDB.databases()` and then iterates the array and lists the values of each element:
+
 ```js
-const promise = indexedDB.databases();
-promise.then((databases) => {
-  console.log(databases);
+async function getDb() {
+  const databases = await indexedDB.databases();
+  log("List databases:");
+  databases.forEach((element) => {
+    log(`name: ${element.name}, version: ${element.version}`);
+  });
+}
+```
+
+To demonstrate how the above function is used, below we create two databases.
+For each database, we log just before the database is opened.
+We also log on successful initialization (or error) and then also log the available databases.
+
+```js
+// Create a database named toDoList with default version (1)
+const dbName1 = "toDoList";
+log(`Opening: ${dbName1}`);
+let DBOpenRequest = window.indexedDB.open(dbName1);
+
+DBOpenRequest.addEventListener("error", (event) => {
+  log(`Error opening: ${dbName1}`);
+  getDb();
+});
+
+DBOpenRequest.addEventListener("success", (event) => {
+  log(`Initialized: ${dbName1}`);
+  getDb();
+});
+
+// Create database "AnotherDb"
+const dbName2 = "AnotherDb";
+log(`Opening ${dbName2}`);
+DBOpenRequest = window.indexedDB.open(dbName2, 2);
+
+DBOpenRequest.addEventListener("error", (event) => {
+  log(`Error opening: ${dbName2}`);
+  getDb();
+});
+
+DBOpenRequest.addEventListener("success", (event) => {
+  log(`Initialized: ${dbName2}`);
+  getDb();
 });
 ```
 
+#### Result
+
+The result is shown below. Note that the time taken to get the databases and their order is undefined.
+
+{{EmbedLiveSample('Create and list databases', '100%', '280px')}}
+
 ## Specifications
 
 {{Specifications}}
diff --git a/files/en-us/web/api/idbfactory/index.md b/files/en-us/web/api/idbfactory/index.md
index bfcb12d7bc59931..0b66729ab87b781 100644
--- a/files/en-us/web/api/idbfactory/index.md
+++ b/files/en-us/web/api/idbfactory/index.md
@@ -11,14 +11,14 @@ The **`IDBFactory`** interface of the [IndexedDB API](/en-US/docs/Web/API/Indexe
 
 ## Instance methods
 
-- {{domxref("IDBFactory.open")}}
-  - : The current method to request opening a [connection to a database](/en-US/docs/Web/API/IndexedDB_API/Basic_Terminology#database_connection).
-- {{domxref("IDBFactory.deleteDatabase")}}
-  - : A method to request the deletion of a database.
-- {{domxref("IDBFactory.cmp")}}
-  - : A method that compares two keys and returns a result indicating which one is greater in value.
-- {{domxref("IDBFactory.databases")}}
-  - : A method that returns a list of all available databases, including their names and versions.
+- {{domxref("IDBFactory.open()")}}
+  - : Requests opening a [connection to a database](/en-US/docs/Web/API/IndexedDB_API/Basic_Terminology#database_connection).
+- {{domxref("IDBFactory.deleteDatabase()")}}
+  - : Requests the deletion of a database.
+- {{domxref("IDBFactory.cmp()")}}
+  - : Compares two keys and returns a result indicating which one is greater in value.
+- {{domxref("IDBFactory.databases()")}}
+  - : Returns a promise that fulfills with an array of all available databases, including their names and versions.
 
 ## Example
 
diff --git a/files/en-us/web/api/notification/click_event/index.md b/files/en-us/web/api/notification/click_event/index.md
index 0129e30d4bbcadd..4c4bcabf9e1b2fd 100644
--- a/files/en-us/web/api/notification/click_event/index.md
+++ b/files/en-us/web/api/notification/click_event/index.md
@@ -38,7 +38,7 @@ is clicked:
 ```js
 notification.onclick = (event) => {
   event.preventDefault(); // prevent the browser from focusing the Notification's tab
-  window.open("http://www.mozilla.org", "_blank");
+  window.open("https://www.mozilla.org", "_blank");
 };
 ```
 
diff --git a/files/en-us/web/api/window/closed/index.md b/files/en-us/web/api/window/closed/index.md
index 7a72fdf41e34560..8c33811d350699d 100644
--- a/files/en-us/web/api/window/closed/index.md
+++ b/files/en-us/web/api/window/closed/index.md
@@ -30,7 +30,7 @@ closed:
 ```js
 // Check that an opener exists and is not closed
 if (window.opener && !window.opener.closed) {
-  window.opener.location.href = "http://www.mozilla.org";
+  window.opener.location.href = "https://www.mozilla.org";
 }
 ```
 
diff --git a/files/en-us/web/css/css_nesting/using_css_nesting/index.md b/files/en-us/web/css/css_nesting/using_css_nesting/index.md
index 57894637d8befef..5fc31187069c0f0 100644
--- a/files/en-us/web/css/css_nesting/using_css_nesting/index.md
+++ b/files/en-us/web/css/css_nesting/using_css_nesting/index.md
@@ -19,7 +19,7 @@ You can use CSS nesting to create child selectors of a parent, which in turn can
 There are certain instances where using the `&` nesting selector can be necessary or helpful:
 
 - When joining selectors together, such as using [compound selectors](#compound_selectors) or [pseudo-classes](/en-US/docs/Web/CSS/Pseudo-classes).
-- For backwards compatability.
+- For backwards compatibility.
 - As a visual indicator to aid with readability, when seeing the `&` nesting selector you know that CSS nesting is being used.
 
 ```css
diff --git a/files/en-us/web/http/headers/origin/index.md b/files/en-us/web/http/headers/origin/index.md
index 673cf5d6e1a33da..62fe3effa78926a 100644
--- a/files/en-us/web/http/headers/origin/index.md
+++ b/files/en-us/web/http/headers/origin/index.md
@@ -77,7 +77,7 @@ Origin: https://developer.mozilla.org
 ```
 
 ```http
-Origin: http://developer.mozilla.org:80
+Origin: https://developer.mozilla.org:80
 ```
 
 ## Specifications
diff --git a/files/en-us/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_pac_file/index.md b/files/en-us/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_pac_file/index.md
index 2fa8e059fb52c4b..c0d663198398b07 100644
--- a/files/en-us/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_pac_file/index.md
+++ b/files/en-us/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_pac_file/index.md
@@ -117,7 +117,7 @@ These functions can be used in building the PAC file:
 > **Note:** pactester (part of the [pacparser](https://github.com/manugarg/pacparser) package) was used to test the following syntax examples.
 >
 > - The PAC file is named `proxy.pac`
-> - Command line: `pactester -p ~/pacparser-master/tests/proxy.pac -u http://www.mozilla.org` (passes the `host` parameter `www.mozilla.org` and the `url` parameter `http://www.mozilla.org`)
+> - Command line: `pactester -p ~/pacparser-master/tests/proxy.pac -u https://www.mozilla.org` (passes the `host` parameter `www.mozilla.org` and the `url` parameter `https://www.mozilla.org`)
 
 ### isPlainHostName()
 
diff --git a/files/en-us/web/mathml/examples/index.md b/files/en-us/web/mathml/examples/index.md
index 85d86c6b340489f..a216fd6cc54fe76 100644
--- a/files/en-us/web/mathml/examples/index.md
+++ b/files/en-us/web/mathml/examples/index.md
@@ -33,5 +33,5 @@ The following demos mix MathML with other Web technologies to produce advanced c
   - : A greek article about the Riemann zeta function, with [Web fonts](/en-US/docs/Learn/CSS/Styling_text/Web_fonts) from the [Greek Font Society](https://greekfontsociety-gfs.gr/).
 - [Pell's equation](https://people.igalia.com/fwang/pell-bigint-mathml/)
   - : A JavaScript program to solve Pell's equation using [`BigInt`](/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt).
-- [Lovelace's program for Bernouilli numbers](https://people.igalia.com/fwang/lovelace-jsclass-mathml/)
-  - : An emulator for Ada Lovelace's program to calculate Bernouilli numbers, using [Private properties](/en-US/docs/Web/JavaScript/Reference/Classes/Private_properties).
+- [Lovelace's program for Bernoulli numbers](https://people.igalia.com/fwang/lovelace-jsclass-mathml/)
+  - : An emulator for Ada Lovelace's program to calculate Bernoulli numbers, using [Private properties](/en-US/docs/Web/JavaScript/Reference/Classes/Private_properties).
diff --git a/files/en-us/web/media/dash_adaptive_streaming_for_html_5_video/index.md b/files/en-us/web/media/dash_adaptive_streaming_for_html_5_video/index.md
index 15cabbf48cec187..1dc4babffa3d1b6 100644
--- a/files/en-us/web/media/dash_adaptive_streaming_for_html_5_video/index.md
+++ b/files/en-us/web/media/dash_adaptive_streaming_for_html_5_video/index.md
@@ -16,13 +16,13 @@ Firefox 23 removed support for DASH for HTML WebM video. It will be replaced by
 
 ## Using DASH - Server Side
 
-First you'll need to convert your WebM video to a DASH manifest with the accompanying video files in various bit rates. To start with you'll only need the ffpmeg program from [ffmpeg.org](https://www.ffmpeg.org/), with libvpx and libvorbis support for WebM video and audio, at least version 2.5 (probably; this was tested with 3.2.5).
+First you'll need to convert your WebM video to a DASH manifest with the accompanying video files in various bit rates. To start with you'll only need the FFmpeg program from [ffmpeg.org](https://www.ffmpeg.org/), with libvpx and libvorbis support for WebM video and audio, at least version 2.5 (probably; this was tested with 3.2.5).
 
 ### 1. Use your existing WebM file to create one audio file and multiple video files
 
 For example:
 
-The file **_in.video_** can be any container with at least one audio and one video stream that can be decoded by ffmpeg,
+The file **_in.video_** can be any container with at least one audio and one video stream that can be decoded by FFmpeg,
 
 Create the audio using:
 
diff --git a/files/en-us/web/media/formats/audio_codecs/index.md b/files/en-us/web/media/formats/audio_codecs/index.md
index a18d8051f04fdea..8c4f617a1ed0818 100644
--- a/files/en-us/web/media/formats/audio_codecs/index.md
+++ b/files/en-us/web/media/formats/audio_codecs/index.md
@@ -546,7 +546,7 @@ As a speech-specific codec, AMR is essentially useless for any other content, in
       Supported bit rates
       
         Half Rate (HR) and Full Rate (FR): 1.8 kbps, 4.75 kbps,
-        5.15 kbpz, 5.9 kbps, 6.7 kbps, 7.4 kbps, 7.95 kbps
+        5.15 kbps, 5.9 kbps, 6.7 kbps, 7.4 kbps, 7.95 kbps
       
     
     
diff --git a/files/en-us/web/media/formats/video_codecs/index.md b/files/en-us/web/media/formats/video_codecs/index.md
index 6ec1c901b71a809..f2cd07a8f19eddf 100644
--- a/files/en-us/web/media/formats/video_codecs/index.md
+++ b/files/en-us/web/media/formats/video_codecs/index.md
@@ -811,7 +811,7 @@ H.263 is a proprietary format, with [patents](https://www.itu.int/ITU-T/recommen
   
     
       Supported bit rates
-      Unrestricted, but typically below 64 Kbps
+      Unrestricted, but typically below 64 kbps
     
     
       Supported frame rates
@@ -930,7 +930,7 @@ HEVC is a proprietary format and is covered by a number of patents. Licensing is
   
     
       Supported bit rates
-      Up to 800,000 Kbps
+      Up to 800,000 kbps
     
     
       Supported frame rates
@@ -1113,7 +1113,7 @@ You almost certainly don't want to use this format, since it isn't supported in
   
     
       Supported bit rates
-      5 Kbps to 1 Gbps and more
+      5 kbps to 1 Gbps and more
     
     
       Supported frame rates
diff --git a/files/en-us/web/performance/understanding_latency/index.md b/files/en-us/web/performance/understanding_latency/index.md
index 5c3eda7f0414e21..179fb632808f022 100644
--- a/files/en-us/web/performance/understanding_latency/index.md
+++ b/files/en-us/web/performance/understanding_latency/index.md
@@ -30,11 +30,11 @@ In the developer tools, under the network table, you can switch the throttling o
 
 | Selection      | Download speed | Upload speed | Minimum latency (ms) |
 | -------------- | -------------- | ------------ | -------------------- |
-| GPRS           | 50 Kbps        | 20 Kbps      | 500                  |
-| Regular 2G     | 250 Kbps       | 50 Kbps      | 300                  |
-| Good 2G        | 450 Kbps       | 150 Kbps     | 150                  |
-| Regular 3G     | 750 Kbps       | 250 Kbps     | 100                  |
-| Good 3G        | 1.5 Mbps       | 750 Kbps     | 40                   |
+| GPRS           | 50 kbps        | 20 kbps      | 500                  |
+| Regular 2G     | 250 kbps       | 50 kbps      | 300                  |
+| Good 2G        | 450 kbps       | 150 kbps     | 150                  |
+| Regular 3G     | 750 kbps       | 250 kbps     | 100                  |
+| Good 3G        | 1.5 Mbps       | 750 kbps     | 40                   |
 | Regular 4G/LTE | 4 Mbps         | 3 Mbps       | 20                   |
 | DSL            | 2 Mbps         | 1 Mbps       | 5                    |
 | Wi-Fi          | 30 Mbps        | 15 Mbps      | 2                    |
diff --git a/files/en-us/web/privacy/third-party_cookies/index.md b/files/en-us/web/privacy/third-party_cookies/index.md
index 394fdea9285310a..9463cdd2b071e9a 100644
--- a/files/en-us/web/privacy/third-party_cookies/index.md
+++ b/files/en-us/web/privacy/third-party_cookies/index.md
@@ -44,9 +44,9 @@ Each of the three sites has an embedded sign-in widget, hosted at `auth.site`, t
 
 ## What is the problem with third-party cookies?
 
-The above use cases sound innocent enough. However, third-party cookies can also be used for illegimitate purposes without the user's consent, which are technically undistinguishable from valid use cases.
+The above use cases sound innocent enough. However, third-party cookies can also be used for illegitimate purposes without the user's consent, which are technically undistinguishable from valid use cases.
 
-Following a link to a third-party or interacting with third-party content embeded in an `