我有一个使用Python和Flask编写的Web应用程序。此Web应用程序仅在用户连接到内部VPN时运行。现在让我们假设用户已连接到互联网和VPN,并正在浏览网络应用程序,他的VPN将断开连接。在这种情况下,他将无法再访问网络应用程序。我想通过我的应用程序通知用户再次连接他的VPN。我写了一个Javascript,其中我正在对应用程序进行HEAD ajax调用,并根据响应状态判断他是否连接到VPN。以下是两个功能。
function isConnectedToVpn(){
var xhr = new (window.ActiveXObject || XMLHttpRequest)("Microsoft.XMLHTTP");
var status;
xhr.open("HEAD", "//" + window.location.hostname , false);
try{
xhr.send();
return (xhr.status >= 200 && (xhr.status < 300 || xhr.status === 304));
}catch (error){
return false;
}
}
function isOnline()
{
return navigator.onLine;
}
现在我怎样才能让最终用户下载这个JS,然后运行它直到整个会话,并在网站无法连接时提醒他。另外,如果他连接到VPN并且应用程序中存在真正的问题,我将如何能够减少误报。任何指针都会很有用。
答案 0 :(得分:0)
将您的js代码放在静态文件夹中,然后更改isOnline
的js代码document.onload = function isOnline()
{
if !(isConnectedToVpn())
{
alert('Your not connected to the VPN');
}
}
现在让所有模板继承自导入js的主(base.html)模板:
on base.html
`<script src="{{url_for('yourapp.static',filename='js/yourjsfile.js')}}"></script>`
放上你的所有模板:
{% extends "yourapp/base.html" %}
..
..
..