uni-app 403 GET /websocket (127.0.0.1) 报错

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app 403 GET /websocket (127.0.0.1) 报错

开发环境 版本号 项目创建方式
Windows win11 HBuilderX

产品分类:
uniapp/App

PC开发环境操作系统:
Windows

HBuilderX类型:
正式

HBuilderX版本号:
4.15

手机系统:
Android

手机系统版本号:
Android 12

手机厂商:
OPPO

手机机型:
真我x7pro

页面类型:
vue

vue版本:
vue2

打包方式:
云端

操作步骤:
见附件

预期结果:
连接成功

实际结果:
19:23:22.375 WebSocket连接打开失败,请检查! {} at utils/websocket.js:57
19:23:22.375 已经被关闭了 {code: 1006, reason: “”} at utils/websocket.js:71

bug描述:
uni.connectSocket 连接失败
python连接成功
apifox连接成功
但是uniapp中连接失败

403 GET /websocket (127.0.0.1)


1 回复

在uni-app中遇到403错误通常意味着服务器拒绝了对某个资源的访问请求。对于WebSocket连接(如你提到的GET /websocket),这可能是因为WebSocket服务器端配置不正确、CORS(跨源资源共享)策略不允许连接、或者客户端请求不符合服务器预期。

以下是一些可能的解决方案,通过代码示例展示如何检查和调整WebSocket连接的设置。

1. 检查WebSocket服务器配置

确保WebSocket服务器正确配置并运行在指定的IP和端口上。以下是一个简单的Node.js WebSocket服务器示例:

const WebSocket = require('ws');

const server = new WebSocket.Server({ port: 8080 });

server.on('connection', (ws) => {
  console.log('New client connected');
  ws.on('message', (message) => {
    console.log(`Received: ${message}`);
    // Echo the message back to the client
    ws.send(`Server received: ${message}`);
  });
  ws.on('close', () => {
    console.log('Client has disconnected');
  });
});

console.log('WebSocket server is listening on ws://localhost:8080');

2. 客户端WebSocket连接代码

在uni-app中,确保WebSocket客户端正确连接到服务器。注意使用正确的协议(ws或wss)和端口号:

// 在uni-app的某个页面中
onLoad() {
  const ws = uni.connectSocket({
    url: 'ws://127.0.0.1:8080/websocket', // 确保URL正确
    success: function (res) {
      console.log('WebSocket连接成功', res);
    },
    fail: function (error) {
      console.error('WebSocket连接失败', error);
    }
  });

  ws.onMessage(function (res) {
    console.log('收到服务器内容:', res.data);
  });

  ws.onError(function (error) {
    console.error('WebSocket错误:', error);
  });

  ws.onClose(function (res) {
    console.log('WebSocket 已关闭!', res);
  });
}

3. 检查CORS策略

如果你的uni-app应用运行在与WebSocket服务器不同的域上,确保服务器配置了正确的CORS策略。这通常需要在服务器端添加适当的响应头,允许跨域请求。

4. 服务器日志和调试

查看WebSocket服务器的日志,了解为何拒绝连接。这可能会给出更具体的错误信息,如认证失败、IP地址被禁止等。

通过上述步骤,你应该能够诊断并解决uni-app中遇到的GET /websocket 403错误。如果问题依旧存在,可能需要进一步检查网络配置或联系服务器管理员。

回到顶部