【问题标题】:Jetty Websocket JSR 356 Error 403码头 Websocket JSR 356 错误 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

标签: maven amazon-web-services websocket jetty


【解决方案1】:

403 Forbidden 是在 HTTP/1.1 连接升级到 Websocket 期间看到的响应,/origin/ 信息不合理。

有关 websocket 规范的详细信息,请参阅 RFC6455: Origin Considerations

Jetty 的实现不会自动发出403 Forbidden,在 Jetty 服务器之外您会看到它的唯一方法是您的自定义 WebSocketCreator 选择使用 sendForbidden()

【讨论】:

  • 我没有告诉我的 websocket 服务器检查源,所以这应该不是问题。
  • 任何中间系统也可以执行来源检查。不要假设它是 Jetty 服务器向您返回此响应。
  • 在花了几乎一整天的时间研究这个之后,我认为问题出在 AWS 上,但我无法真正做到这一点。你知道它可能是什么吗?我已经在安全组上打开了 8080 端口。
猜你喜欢
  • 2013-10-13
  • 2014-11-04
  • 2017-07-20
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
相关资源
最近更新 更多