js获取网络时间(axios获取响应头时间)

àì夳堔傛蜴生んèń 2023-01-08 08:07 681阅读 0赞

js 获取网络时间:

由于new Date获取的是客户本地时间,有些情况下我们需要获取网络时间,避免用户更改本地时间而产生的某些功能冲突,则我们可以通过如下方法从浏览器获取我们服务器上的时间! 你也可以获取不同网址上的时间,如:www.baidu.com

  1. const request = new XMLHttpRequest();
  2. request.open("GET", "/", true); // 中间参数可以改成 www.baidu.com
  3. request.send();
  4. //该属性每次变化时会触发
  5. request.onreadystatechange = function(){
  6. if(request.readyState === 4 && request.status === 200){
  7. console.log(request.getResponseHeader("Date")) //请求服务器的响应时间
  8. console.log(Date.parse(request.getResponseHeader("Date"))) //获取到的时间戳
  9. }
  10. }

同步获取:(封装获取网络时间方法)

方法一:

axios 获取服务器时间 response.header.date

扩展:(axios 请求头缺失date的原因)
需要服务端设置字段: Access-Control-Expose-Headers
https://github.com/axios/axios/issues/606
https://stackoverflow.com/questions/37897523/axios-get-access-to-response-header-fields

没有设置请求头缺失 如下:

  1. //
  2. {
  3. content-type: "application/json; charset=utf-8",
  4. cache-control: "max-age=0, private, must-revalidate"
  5. }

方法二:

  1. // 封装同步获取获取网络时间方法
  2. function getServerTime(){
  3. return new Promise((resolve) => {
  4. const request = new XMLHttpRequest()
  5. request.open("GET", "/", true)
  6. request.send()
  7. request.onreadystatechange = function(){
  8. const serverTime = request.getResponseHeader("Date")
  9. if (serverTime) {
  10. resolve(Date.parse(serverTime))
  11. } else {
  12. resolve(new Date().valueOf()) //没网情况获取本地时间
  13. }
  14. }
  15. })
  16. }
  17. //使用
  18. getServerTime().then((time) => {
  19. console.log(time)
  20. })

发表评论

表情:
评论列表 (有 0 条评论,681人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JS获取时间

    此文章来自转载 : 链接: [JS获取本周、本季度、本月、上月、本年的开始日期、结束日期][JS]. / 获取本周、本季度、本月、上月的开始日期、结束日期 /