WebSocket 连接到 'ws://localhost:8081/.../.../...' 失败:HTTP 身份验证失败;没有可用的有效凭据

Posted

技术标签:

【中文标题】WebSocket 连接到 \'ws://localhost:8081/.../.../...\' 失败:HTTP 身份验证失败;没有可用的有效凭据【英文标题】:WebSocket connection to 'ws://localhost:8081/.../.../...' failed: HTTP Authentication failed; no valid credentials availableWebSocket 连接到 'ws://localhost:8081/.../.../...' 失败:HTTP 身份验证失败;没有可用的有效凭据 【发布时间】:2018-12-18 03:42:04 【问题描述】:

我必须在我的项目中使用 Angular 2 的 Websocket 连接 我无法创建带有错误的 Websocket 连接 '到 'ws://localhost:8081/.../.../..' 的 WebSocket 连接失败:HTTP 身份验证失败;没有可用的有效凭据' 这是我的代码

var socket = new WebSocket('ws:localhost:8081/../../..');

我已经堆了几天了。请知道这件事的任何人帮助我。

最好的问候

【问题讨论】:

【参考方案1】:

您可以使用 rxjs 库中的 websocket 包装器。

像这样导入:

import webSocket, WebSocketSubject from 'rxjs/webSocket';

然后像这样创建一个:

private webSocket: WebSocketSubject = webSocket(environment.chatUrl);

然后您可以订阅它以获取入站消息:

this.subscription = this.webSocket.subscribe(
  msg => 
   // do something with the message
  ,
  err => 
   // handle the error
   console.log('error!', err);
  ,
  () => 
    // handle getting disconnected
    console.log('websocket closed');
  
);

并发送消息:

this.webSocket.next(message);

完成后不要忘记取消订阅 websocket。

【讨论】:

谢谢。但终于意识到,如果我添加 spring-security.jar 并发生错误,则会发生错误是因为 Websocket Server with java。【参考方案2】:

这是由于以下原因而发生的 您的 http url 和 websocket url 在身份验证时不匹配

您的 http 网址是

http://localhost:port/something..

你的 websocket 网址是 var webs = new WebSocket("ws://192.168...:port/something..");

反之亦然

要解决此问题,请保持两个网址相同

【讨论】:

以上是关于WebSocket 连接到 'ws://localhost:8081/.../.../...' 失败:HTTP 身份验证失败;没有可用的有效凭据的主要内容,如果未能解决你的问题,请参考以下文章

内容安全策略拒绝连接到 Websocket 错误

actioncable 无法连接到 websocket

WebSocket 连接到自签名服务器

WCF 连接到 Websocket 服务器

在android java中连接到服务器websocket

WebSocket 连接到 'ws://localhost:4444/subscriptions' 失败:WebSocket 在连接建立之前关闭