uni-app 403 GET /websocket (127.0.0.1) 报错
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)
在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
错误。如果问题依旧存在,可能需要进一步检查网络配置或联系服务器管理员。