码头 Websocket JSR 356 错误 403
Posted
技术标签:
【中文标题】码头 Websocket JSR 356 错误 403【英文标题】:Jetty Websocket JSR 356 Error 403 【发布时间】:2016-07-13 15:36:29 【问题描述】:让我先说我是 maven 和 jetty 的新手。无论如何,当我在 Windows 上并使用 localhost 作为 websocket 地址时,我的 websocket 工作正常。然后,我将代码复制到我的 AWS 服务器,并将浏览器中的 websocket 地址更改为 AWS DNS。当我尝试运行它时,我得到了一个错误 403(被禁止的权限)并且握手失败。我在网上看到的所有地方都说 403 错误是您手动添加到 websocket 服务器的内容。我在服务器端缺少某种文件权限吗?顺便说一句,Jetty 说它已经在服务器端启动并运行了。
【问题讨论】:
如果您将该 AWS DNS 更改为 127.0.0.1,会发生什么情况?有用吗 好吧,我不再收到 403。现在,我在使用它时遇到了这个错误。 WebSocket 连接失败:连接建立错误:net::ERR_CONNECTION_REFUSED 我不认为这是正确的。我希望码头在服务器而不是本地机器上运行。 127.0.0.1 是浏览器机器的localhost 【参考方案1】:403 Forbidden
是在 HTTP/1.1 连接升级到 Websocket 期间看到的响应,/origin/
信息不合理。
有关 websocket 规范的详细信息,请参阅 RFC6455: Origin Considerations。
Jetty 的实现不会自动发出403 Forbidden
,在 Jetty 服务器之外您会看到它的唯一方法是您的自定义 WebSocketCreator
选择使用 sendForbidden()
【讨论】:
我没有告诉我的 websocket 服务器检查源,所以这应该不是问题。 任何中间系统也可以执行来源检查。不要假设它是 Jetty 服务器向您返回此响应。 在花了几乎一整天的时间研究这个之后,我认为问题出在 AWS 上,但我无法真正做到这一点。你知道它可能是什么吗?我已经在安全组上打开了 8080 端口。以上是关于码头 Websocket JSR 356 错误 403的主要内容,如果未能解决你的问题,请参考以下文章
带有 Spring Boot 的 JAVAX JSR 356 Websocket
将 Java WebSockets (JSR-356) 与 SpringBoot 集成
使用 JSR-356(websockets)的 Jetty 8 配置