Enhance error handling and user feedback in the web server's index handler
This commit is contained in:
@@ -178,12 +178,29 @@ func (s *Server) indexHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
try {
|
||||
const response = await fetch('/api/ports');
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error('HTTP error! status: ' + response.status);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
displayPorts(data.ports);
|
||||
// 检查是否有错误
|
||||
if (data.error) {
|
||||
throw new Error(data.error);
|
||||
}
|
||||
|
||||
// 检查 ports 是否存在
|
||||
if (data.ports) {
|
||||
displayPorts(data.ports);
|
||||
} else {
|
||||
displayPorts([]);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('扫描失败:', error);
|
||||
alert('扫描失败: ' + error.message);
|
||||
// 显示空表格
|
||||
displayPorts([]);
|
||||
} finally {
|
||||
document.getElementById('loading').style.display = 'none';
|
||||
}
|
||||
@@ -209,6 +226,15 @@ func (s *Server) indexHandler(w http.ResponseWriter, r *http.Request) {
|
||||
const tbody = document.getElementById('portsBody');
|
||||
tbody.innerHTML = '';
|
||||
|
||||
// 检查 ports 是否为空或无效
|
||||
if (!ports || !Array.isArray(ports) || ports.length === 0) {
|
||||
const row = document.createElement('tr');
|
||||
row.innerHTML = '<td colspan="5" style="text-align: center; color: #666;">暂无发现端口</td>';
|
||||
tbody.appendChild(row);
|
||||
document.getElementById('portsTable').style.display = 'table';
|
||||
return;
|
||||
}
|
||||
|
||||
ports.forEach(port => {
|
||||
const row = document.createElement('tr');
|
||||
|
||||
@@ -217,8 +243,8 @@ func (s *Server) indexHandler(w http.ResponseWriter, r *http.Request) {
|
||||
: '-';
|
||||
|
||||
row.innerHTML =
|
||||
'<td class="port-number">' + port.port + '</td>' +
|
||||
'<td><span class="protocol-badge">' + port.protocol.toUpperCase() + '</span></td>' +
|
||||
'<td class="port-number">' + (port.port || '-') + '</td>' +
|
||||
'<td><span class="protocol-badge">' + (port.protocol ? port.protocol.toUpperCase() : 'UNKNOWN') + '</span></td>' +
|
||||
'<td class="status-active">' + (port.state || 'ACTIVE') + '</td>' +
|
||||
'<td>' + (port.serviceName || '未知服务') + '</td>' +
|
||||
'<td>' + serviceCell + '</td>';
|
||||
|
||||
Reference in New Issue
Block a user