当在 HTTPS 页面上创建 websocket object 时,如何阻止 chrome 将 websockets 从 WS 升级到 WSS
How to stop chrome from upgrading websockets from WS to WSS when the websocket object is created on an HTTPS page
我在这里制作了一个真实的 minecraft 浏览器端口,仅支持多人游戏,它基于 websockets。
https://g.eags.us/eaglercraft/
我希望此页面上的游戏能够使用 WS 和 WSS websocket 协议连接到服务器,因此对于那些只是试图设置小型私人服务器以用于从学校计算机或其他设备上玩此游戏。我的原始服务器和 cloudflare 目前都配置为仅严格使用 HTTPS,您通常无法从安全的 HTTPS 页面初始化不安全的 WS websocket,这意味着任何人都试图在我的 'official' [=] 之外的自己的服务器上玩游戏29=] 将需要 SSL 证书和 WSS URI。
我已将 content-security-policy: upgrade-insecure-requests
header 添加到上面发布的 link 中。我的印象是,即使页面是通过 HTTPS 加载的,这也会在页面上建立常规的不安全 HTTP/WS 连接,但它似乎不起作用。当我在此页面的 chrome devtools 控制台中创建 WebSocket object 并尝试将其连接到 WS URI 时,网络选项卡显示 object 使用的实际请求具有 WS尽管我输入的 URI 是 WS,但 URI 已替换为 WSS。
如何禁用此特定页面的所有这些行为并仅执行 websocket 请求 as-is
我误解了 header 的行为。它像宣传的那样工作,将 URI 从 WS 升级到 WSS。我最初将其解释为 header,它为浏览器应用权限覆盖,仅将所有套接字 URI 视为已升级到 WSS,而无需实际升级底层 URI 和请求。
对我的 3:00 AM 困惑表示歉意,请参阅 MDN Page 以获得更多说明
我在这里制作了一个真实的 minecraft 浏览器端口,仅支持多人游戏,它基于 websockets。
https://g.eags.us/eaglercraft/
我希望此页面上的游戏能够使用 WS 和 WSS websocket 协议连接到服务器,因此对于那些只是试图设置小型私人服务器以用于从学校计算机或其他设备上玩此游戏。我的原始服务器和 cloudflare 目前都配置为仅严格使用 HTTPS,您通常无法从安全的 HTTPS 页面初始化不安全的 WS websocket,这意味着任何人都试图在我的 'official' [=] 之外的自己的服务器上玩游戏29=] 将需要 SSL 证书和 WSS URI。
我已将 content-security-policy: upgrade-insecure-requests
header 添加到上面发布的 link 中。我的印象是,即使页面是通过 HTTPS 加载的,这也会在页面上建立常规的不安全 HTTP/WS 连接,但它似乎不起作用。当我在此页面的 chrome devtools 控制台中创建 WebSocket object 并尝试将其连接到 WS URI 时,网络选项卡显示 object 使用的实际请求具有 WS尽管我输入的 URI 是 WS,但 URI 已替换为 WSS。
如何禁用此特定页面的所有这些行为并仅执行 websocket 请求 as-is
我误解了 header 的行为。它像宣传的那样工作,将 URI 从 WS 升级到 WSS。我最初将其解释为 header,它为浏览器应用权限覆盖,仅将所有套接字 URI 视为已升级到 WSS,而无需实际升级底层 URI 和请求。
对我的 3:00 AM 困惑表示歉意,请参阅 MDN Page 以获得更多说明