Javascript-仅在连接到VPN时从内部服务器加载图像

问题描述

我的目的是如果用户在家中工作并且未连接到公司VPN,则通过Javascript在我们的首页上隐藏 iframe

要了解最终用户是否已连接到我们公司的VPN,我已将虚拟映像上传到我们的一个Intranet站点,只有在连接到VPN并尝试访问该映像时,我们才能连接该虚拟映像在Javascript上。我的代码如下:

    function request_image(url) {
        return new Promise(function(resolve,reject) {
            var img = new Image();
            img.onload = function() { resolve(img); console.log('test1'); };
            img.onerror = function() { reject(url); console.log('test2'); };
            img.src = 'https://ourwebsite/Pages/Resource.aspx?ItemPath=%2fwhite.png'; 
        });
    }
    
    function ping(url,multiplier) {
        return new Promise(function(resolve,reject) {
            var start = (new Date()).getTime();
            var response = function() { 
                var delta = ((new Date()).getTime() - start);
                delta *= (multiplier || 1);
                if (delta>50) resolve(delta); 
                else reject(delta);
                console.log('this is delta: ' + delta);
            };
            request_image(url).then(response).catch(response);
            setTimeout(function() { reject(Error('Timeout')); },1000);
        });
    }

和主页上:

var do_ping = function() {
        ping('http://mssql04.nwhreit.com').then(function(delta) {
        }).catch(function(error) {
            document.getElementsByClassName('CanvasZoneContainer')[1].style.display='none';
        });
    };
    
    do_ping();

运行此代码时,我看到它总是命中img.onerror,因此在控制台中,无论是否连接到VPN,我都会看到“ test2”。为什么?连接到VPN时,我想点击img.onload。我看不到我在做什么错,任何帮助将不胜感激。

请注意,我可以转到“ https://ourwebsite/Pages/Resource.aspx?ItemPath =%2fwhite.png”并成功查看图像,因此该链接有效。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)