mirror of
https://github.com/denoland/deno.git
synced 2024-12-25 08:39:09 -05:00
feat(ext/websocket): allow HTTP(S) protocol in URL (#19862)
Closes #19093
This commit is contained in:
parent
fa52b5e733
commit
cbfa98ea0b
2 changed files with 12 additions and 2 deletions
|
@ -19,6 +19,7 @@ import {
|
||||||
MessageEvent,
|
MessageEvent,
|
||||||
} from "ext:deno_web/02_event.js";
|
} from "ext:deno_web/02_event.js";
|
||||||
import { Blob, BlobPrototype } from "ext:deno_web/09_file.js";
|
import { Blob, BlobPrototype } from "ext:deno_web/09_file.js";
|
||||||
|
import { getLocationHref } from "ext:deno_web/12_location.js";
|
||||||
const primordials = globalThis.__bootstrap.primordials;
|
const primordials = globalThis.__bootstrap.primordials;
|
||||||
const {
|
const {
|
||||||
ArrayBufferPrototype,
|
ArrayBufferPrototype,
|
||||||
|
@ -143,11 +144,17 @@ class WebSocket extends EventTarget {
|
||||||
let wsURL;
|
let wsURL;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
wsURL = new URL(url);
|
wsURL = new URL(url, getLocationHref());
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new DOMException(e.message, "SyntaxError");
|
throw new DOMException(e.message, "SyntaxError");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wsURL.protocol === "http:") {
|
||||||
|
wsURL.protocol = "ws:";
|
||||||
|
} else if (wsURL.protocol === "https:") {
|
||||||
|
wsURL.protocol = "wss:";
|
||||||
|
}
|
||||||
|
|
||||||
if (wsURL.protocol !== "ws:" && wsURL.protocol !== "wss:") {
|
if (wsURL.protocol !== "ws:" && wsURL.protocol !== "wss:") {
|
||||||
throw new DOMException(
|
throw new DOMException(
|
||||||
"Only ws & wss schemes are allowed in a WebSocket URL.",
|
"Only ws & wss schemes are allowed in a WebSocket URL.",
|
||||||
|
|
|
@ -7229,7 +7229,10 @@
|
||||||
"remove-own-iframe-during-onerror.window.html": false,
|
"remove-own-iframe-during-onerror.window.html": false,
|
||||||
"remove-own-iframe-during-onerror.window.html?wpt_flags=h2": false,
|
"remove-own-iframe-during-onerror.window.html?wpt_flags=h2": false,
|
||||||
"remove-own-iframe-during-onerror.window.html?wss": false,
|
"remove-own-iframe-during-onerror.window.html?wss": false,
|
||||||
"Create-on-worker-shutdown.any.worker.html": false
|
"Create-on-worker-shutdown.any.worker.html": false,
|
||||||
|
"Create-http-urls.any.html": true,
|
||||||
|
"Create-invalid-urls.any.html": true,
|
||||||
|
"Create-non-absolute-url.any.html": true
|
||||||
},
|
},
|
||||||
"workers": {
|
"workers": {
|
||||||
"Worker-base64.any.worker.html": true,
|
"Worker-base64.any.worker.html": true,
|
||||||
|
|
Loading…
Reference in a new issue