fix:syncServerTime改用uni.request确保Date响应头可读
This commit is contained in:
parent
bfb4305d01
commit
a4afc95abf
@ -81,38 +81,43 @@ var _timeSyncing = false
|
|||||||
function syncServerTime() {
|
function syncServerTime() {
|
||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve) {
|
||||||
if (_timeSyncing) {
|
if (_timeSyncing) {
|
||||||
// 已有同步请求在进行中,重试 500ms 后获取
|
|
||||||
setTimeout(function () { resolve(getServerDate()) }, 500)
|
setTimeout(function () { resolve(getServerDate()) }, 500)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_timeSyncing = true
|
_timeSyncing = true
|
||||||
var url = CFG.protocol + '://' + CFG.endpoint + '/'
|
var url = CFG.protocol + '://' + CFG.endpoint + '/'
|
||||||
var XHRClass = getXHR()
|
console.log('【MinIO】同步服务器时间:', url)
|
||||||
if (XHRClass) {
|
uni.request({
|
||||||
var xhr = new XHRClass()
|
url: url,
|
||||||
xhr.open('GET', url, true)
|
method: 'GET',
|
||||||
xhr.onload = function () {
|
success: function (res) {
|
||||||
var serverDateStr = xhr.getResponseHeader('Date')
|
var serverDateStr = null
|
||||||
|
// 尝试从多个地方取 Date 头
|
||||||
|
if (res.header) {
|
||||||
|
serverDateStr = res.header.Date || res.header.date || res.header['Date']
|
||||||
|
}
|
||||||
|
if (res.headers) {
|
||||||
|
serverDateStr = serverDateStr || res.headers.Date || res.headers.date || res.headers['Date']
|
||||||
|
}
|
||||||
if (serverDateStr) {
|
if (serverDateStr) {
|
||||||
var serverMs = new Date(serverDateStr).getTime()
|
var serverMs = new Date(serverDateStr).getTime()
|
||||||
if (serverMs) {
|
if (serverMs) {
|
||||||
_timeOffset = serverMs - Date.now()
|
_timeOffset = serverMs - Date.now()
|
||||||
console.log('【MinIO】时间同步完成,服务器偏移:', _timeOffset, 'ms')
|
console.log('【MinIO】时间同步完成,服务器偏移:', _timeOffset, 'ms, 服务器时间:', serverDateStr)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
console.warn('【MinIO】未获取到Date响应头, header:', JSON.stringify(res.header || res.headers))
|
||||||
}
|
}
|
||||||
_timeSyncing = false
|
_timeSyncing = false
|
||||||
resolve(getServerDate())
|
resolve(getServerDate())
|
||||||
}
|
},
|
||||||
xhr.onerror = function () {
|
fail: function (err) {
|
||||||
_timeSyncing = false
|
console.warn('【MinIO】时间同步请求失败:', JSON.stringify(err))
|
||||||
resolve(new Date())
|
|
||||||
}
|
|
||||||
xhr.send()
|
|
||||||
} else {
|
|
||||||
_timeSyncing = false
|
_timeSyncing = false
|
||||||
resolve(new Date())
|
resolve(new Date())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user