ws 和 wss 之间的区别?

2023-12-02

把ws改成wss的步骤是什么?

wss 是通过普通 HTTP 进行升级还是 wss 仅适用于 HTTPS?

webSocket = new WebSocket("ws://localhost:port/Esv/ocp");

当我将 ws 更改为 wss 时,工作正常

webSocket = new WebSocket("wss://localhost:port/Esv/ocp");

它显示这个错误:

连接建立时出错:net::ERR_SSL_PROTOCOL_ERROR


简洁版本

是否使用 SSL

你可能有一个SSL证书问题。连接点规则可以是概括为:

  • wss连接上https only
  • ws连接上http

and反之亦然:

  • https接受wss only
  • http接受ws only

Errors

以下情况会导致报错(在Firefox下进行测试):

  • If you want to connect a wss connection to a http endpoint. In my tests, I had an

    InvalidStateError:尝试使用不可用或不再可用的对象

  • If you want to connect a ws connection to a https endpoint, you'll have the error

    SecurityError:操作不安全。

正式答复

websocket的圣经是RFC 6455。在部分4.1.5:

If /secure/为 true 时,客户端必须在打开连接之后、发送握手数据之前通过连接执行 TLS 握手 [RFC2818]。如果失败(例如,无法验证服务器的证书),则客户端必须WebSocket 连接失败并中止连接。否则,该通道上的所有进一步通信必须通过加密隧道 [RFC5246] 运行。

The secure标志由 URI 定义。第 3 节定义了什么是secure

如果方案组件不区分大小写地匹配“wss”,则该 URI 被称为“安全”(并且据说“设置了安全标志”)。


TL;DR

如果你想使用wss:

  • 您必须激活 SSL
  • 您的端点必须受到保护(https://...): 不允许“安全降级”

如果你想使用ws:

  • 确保您的端点未启用 SSL (http://...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ws 和 wss 之间的区别? 的相关文章

随机推荐

  • 简单注入器身份 UserManager 注册错误

    我正在遵循洋葱架构并使用身份框架 在我的核心项目中 我有 public interface IUserRepository IDisposable Repository methods 在我的 Architecture Repository
  • 访问多维数组中任意深度的键

    如果我有一个包含以下内容的数组 key1 key2 key3 有什么方法可以将其映射到数组 array key1 key2 key3 不使用循环或 eval 数组示例 var key1 gt subkey1 gt finalkey gt v
  • 循环结构的迭代器

    以下代码显示了我目前拥有的内容 它是一个适配器 循环数据结构 main 函数展示了它是如何使用的 这 一切都很好而且很快 但我真的很想让迭代器结束 定义的结构circ 到目前为止涉及的所有方法 某种计数方案 如果使用循环器则计算范围 构建一
  • 使用 Visual Studio sdk 取消修饰函数名称

    要取消修饰 Visual Studio 生成的损坏的 C 名称 您可以使用undname exe 但是 如果您想避免每次需要未装饰时创建完整进程的开销 该怎么办 Visual Studio SDK 中是否有任何等效功能 VS2005 应该支
  • 哪些 Grails 项目文件不应该添加到版本控制中? (Grails 1.3.x)

    这个问题之前已经被问过 但不久前 对 Grails gitignore 的建议 这是针对 grails 1 0 x 的回答 Grails 1 3 x 项目中的哪些文件不应包含在版本控制中 See http grails org Checki
  • 静态类成员上未解析的外部符号

    非常简单地说 我有一个主要由静态公共成员组成的类 因此我可以将类似的函数组合在一起 但仍然需要从其他类 函数调用它们 无论如何 我在类公共作用域中定义了两个静态 unsigned char 变量 当我尝试在同一个类的构造函数中修改这些值时
  • Python 多处理模块的开销

    我正在使用multiprocessingPython 中的模块 并期望启动进程 创建队列以及向队列中放入值或从队列中获取值会产生一些开销 但是 如果子流程有足够的工作要做 我预计开销最终会被消除 运行一个简单的示例 如下所述 我生成的进程的
  • 不阻塞地获取进程输出

    我想获得一个进程的输出 Git exe准确地说 并将其转换为 String 对象 以前有时我的代码被阻止 然后我发现这是因为这个过程 ErrorStream有一些输出 我必须手动捕获它 我对此不感兴趣 我将我的代码更改为 public st
  • rand() 是如何工作的?它有一定的倾向吗?有没有更好用的东西?

    我读到它与时间有关 你也可以从包含 time h 中得到 所以我假设了这么多 但它到底是如何工作的呢 另外 它是否有奇数或偶数或类似数字的倾向 最后 C 标准库或 Foundation 框架中是否有更好的分布 简要地 You use tim
  • 输入可点击的电子邮件和网址

    我有一个用 PHP 处理的表单 用户有时会将他们的电子邮件地址放在表单或 URL 中 在我删除标签的输入后 这些通常会以文本形式出现 最近 我的用户开始要求我在打开显示其输入的页面 现在从数据库中提取 时使他们的 URL 和电子邮件可点击
  • 约束规划:在最短的时间内安排发言人

    我正在尝试通过以下方式调整已经解决的约束规划问题哈坎 凯勒斯特兰德 hakankless 并且需要一些帮助 原来解决的问题 有6个公共演讲者和6个房间 每个发言者应分配到一个房间 没有任何房间是空的 每个发言者只能在一个房间内 解决方案在这
  • 如何在 Java 中使用带有托盘图标的上下文菜单?

    我正在使用 Netbeans 开发 Java 应用程序 我想在系统托盘上创建一个托盘图标 并且当我右键单击托盘图标时将显示一个弹出菜单 我通过拖放创建了一个 jframe 和弹出菜单 但我有一个问题 我的弹出菜单有 2 个菜单项 Exit
  • 什么二进制数只能表示为近似值?

    以十进制表示 以 10 为底 1 3只能近似为 0 33333 次重复 只能以近似值表示的二进制数相当于什么数 0 1 就是这样的一个例子 还有 0 2 这个问题也类似于这另一个问题 已经有了很好的答案
  • 对于具有大量字段的对象,是否有更好的方法来实现 Equals?

    也可以看看C 中如何快速检查数据传输的两个对象是否具有相同的属性 我有很多数据传输对象 DTO 每个对象都包含很多简单的字段 我需要对所有这些实现 Equals 这样我就可以编写一些单元测试来传输它们 var WCF 我正在使用的代码是 p
  • 如何通过 cython 将 MPI 通信器从 python 传递到 C?

    我正在尝试包装一个 C 函数MPI Comm通过 cython 通信器句柄作为参数 因此 我希望能够从 python 调用该函数 并将其传递给mpi4py MPI Comm目的 我想知道的是 如何进行转换mpi4py MPI Comm to
  • 在 GWT 模块之间导航

    我已将 GWT 应用程序分为多个模块 在它们之间导航的最佳方式是什么 目前我正在使用Window Location assign foo html bar 但还有更好的办法吗 History newItem仅适用于当前模块内的历史记录 要更
  • 具有相同输出的伪随机发生器

    我在以下网址看到一篇有关汽车远程进入系统的文章http auto howstuffworks com remote entry2 htm在第三个要点中 作者说 发送器和接收器都使用相同的伪随机数生成器 当发送器发送 40 位代码时 它使用伪
  • 需要 html 不能与 onclick 一起使用

    我使用以下内容在我的网站上提交表单 a class button href Register a 我在表单中输入了带有所需标签的内容 但这似乎并没有触发它们 含义不会阻止提交空输入 如果我使用普通的提交按钮 那么它工作得很好 onclick
  • 比较 char 忽略大小写的正确方法是什么?

    我想知道比较两个字符忽略大小写的正确方法是什么 适用于所有文化 也是Comparer
  • ws 和 wss 之间的区别?

    把ws改成wss的步骤是什么 wss 是通过普通 HTTP 进行升级还是 wss 仅适用于 HTTPS webSocket new WebSocket ws localhost port Esv ocp 当我将 ws 更改为 wss 时 工