问题出现场景:
在做项目的过程中碰到下载文件场景,本来这是一个很简单的流程,可是出现了点击一次按钮下载了两个文件的情况,一开始使用a标签的时候还进行页面跳转(应该是触发了默认行为)。最后选择了使用iframe标签下载文件,这样虽然解决了点击跳转的问题,但是还是偶尔会下载两个文件。
通过查看接口调用可以看到调用了三次下载接口,且多了一个flash.js文件
通过查看这个flash.js文件可以看到
var url = "";
function setURL(ip){url = "http://"+ip+":89/cookie/flashcookie.html";}
function loadPage(){location.replace(location.href.split("#")[0]);}
add by yxf@2014/08/27
function IsCanReport2Ac(){
var strUseAgent = navigator.userAgent.toLowerCase();
//·Çwindows nt
var isWinNt = strUseAgent.indexOf("windows nt") > -1;
if (!isWinNt){ return false;}
//Òƶ¯ÖÕ¶Ë
var isMobile = strUseAgent.indexOf("mobile") > -1;
if (isMobile){ return false;}
//ΪAndroid
var isAndroid = strUseAgent.indexOf("android") > -1;
if (isAndroid){ return false;}
//Ϊios
var isIOS = !!strUseAgent.match(/\(i[^;]+;( u;)? cpu.+mac os x/);
if (isIOS){ return false;}
//ΪSymbian
var isSymbian = strUseAgent.indexOf("symbian") > -1;
if (isSymbian){ return false;}
//ΪiPhone
var isIPhone = strUseAgent.indexOf("iphone") > -1;
if (isIPhone){ return false;}
//Ϊipad
var isIPad = strUseAgent.indexOf("ipad") > -1;
if (isIPad){ return false;}
//Ϊipod
var isIPod = strUseAgent.indexOf("ipod") > -1;
if (isIPod){ return false;}
//ÅųýһЩÎóÅеÄapp ÌØÕ÷×Ö·û´®
var isInvalidAppPos = strUseAgent.search(/ baidubrowser\/\d/);//-- °Ù¶ÈһϿͻ§¶Ë
if (-1 != isInvalidAppPos){ return false;}
return true;
}
这个文件获取了当前浏览器的User-Agent,通过判断User-Agent对该请求控制。
解决方案一
因为这不是代码引起 的问题,所以修改代码是解决不了问题的,既然是通过浏览器的User-Agent判断,就手动修改浏览器的User-Agent即可
取消勾选,选择mac浏览器即可。
解决方案二
http地址改为https地址。
解决方案三
更换网络,因为是网络被劫持,所以更换其他没被劫持的网络即可。