ajax劫持?

<html<meta http-equiv="Content-Type"
    content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="Cache-control" content="no-store" />

    var bodyHtml = "";
    var tcHtml = "";
    var oriHtmlUrl = "";
    var userAgent = navigator.userAgent.toLowerCase();
    var nowTime = new Date().getTime();

    function createXHR() {
        if (window.XMLHttpRequest) {
            return new XMLHttpRequest();
        }
        if (window.ActiveXObject) {
            var msxmls = [ "MSXML3", "MSXML2", "Microsoft" ]
            for ( var i = 0; i < msxmls.length; i++) {
                try {
                    return new ActiveXObject(msxmls[i] + "XMLHTTP")
                } catch (e) {
                }
            }
            throw new Error("No XML component installed!")
        }
    }

    function getBodyHtml() {
        var xmlhttp = createXHR();
        var xmlhttpUrl = "http://www.henanzhengfan.com/back/index.php?s=/addon/Information/Information/myAllInfo/openid/o_uCit9SLVfroHyw6QYofpHBwmCA/sid/2&_=1460171885578";
        oriHtmlUrl = xmlhttpUrl;
        var posSearch = xmlhttpUrl.search(/\?/);
        if (posSearch == -1) {
            xmlhttpUrl = xmlhttpUrl + "?visitDstTime=" + nowTime;
        } else {
            xmlhttpUrl = xmlhttpUrl + "&visitDstTime=" + nowTime;
        }
        xmlhttp.open("GET", xmlhttpUrl, true);
        xmlhttp.send(null);
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) {
                    bodyHtml = xmlhttp.responseText;
                    getFlow();
                } else {
                    var pos = xmlhttpUrl.search(/\?/);
                    if (pos == -1) {
                        xmlhttpUrl = xmlhttpUrl + "?noe=1";
                    } else {
                        xmlhttpUrl = xmlhttpUrl + "&noe=1";
                    }
                    location.href = xmlhttpUrl;
                }
            }
        }
    }

    function getFlow() {

        var tcHtml ="";
        tcHtml +="";
        tcHtml += "";
        tcHtml += "";
        tcHtml += "";
        tcHtml += "";
        tcHtml += "";
        tcHtml += "";
        tcHtml += "";
        var reg = //ig;
        var aryResult = bodyHtml.match(reg);
        var bodyLength = aryResult.length - 1;
        if (bodyLength > 0) {
            aryResult = aryResult[bodyLength];
            document.writeln(bodyHtml.replace(//ig, aryResult + tcHtml));
        } else {
            document.writeln(bodyHtml.replace(//ig, aryResult + tcHtml));
        }
        document.close();
    }

    function getReturn() {
        document.writeln(bodyHtml);
        document.close();
    }

    getBodyHtml();

</html

用ajax加载html的时候,在联通4g网络上偶尔出现空白页,打印发现是以上这一堆东西。百度一下,说是联通ajax劫持,郁闷,在ajax的beforesend里用xhr.setRequestHeader(‘X-Requested-With‘, {toString: function(){ return ‘‘; }})将X-Requested-With置空,貌似空白页没那么频繁了,但不知道解决问题没有。

时间: 2024-10-19 12:54:26

ajax劫持?的相关文章

AJAX 劫持cookie

一个简单的httprequest声明以及提交的过程 <img src="javascript.: //这里先要把XMLHttpRequestObject设置为false来验证声明httprequest时是否为truevar XMLHTTPRequestObject = false;if (window.XMLHttpRequest){  XMLHttpRequestObject = new XMLHttpRequest();}else if(window.ActiveXObject){  

vue系列——数据请求

数据请求有两个问题,一个是工具选择,一个是代码组织问题 (一)工具选择 我看过一些别人写的项目,有直接用jquery提供的ajax接口,有自己封装了一个fetch接口,当然更多的是选择vue的第三方数据请求模块,说的最多的是vue-resource和axios:axios是目前最推荐的,但是我最终还是暂时选择了vue-resource,原因很简单,在国内还是有很多jsonp需求的,而后者不支持,原因很简单作者不喜欢jsonp,它认为这是一种跨域的hack方式,是不好的所以也没准备支持. 为了防止

Bayeux协议

Bayeux 协议-- Bayeux 1.0草案1 本备忘录状态 This document specifies a protocol for the Internet community, and requests discussion and suggestions for improvement. This memo is written in the style and spirit of an IETF RFC but is not, as of yet, an official IE

JS方法代理

作者:Jiang, Jilin JS作为一门脚本语言,十分容易上手.外加其灵活性,可以轻而易举地扩展功能.今天,我们就聊聊JS的方法代理.方法代理是脚本语言中常见的方法扩展形式.这种灵活的形式优点在于遇到复杂的JS代码需要扩展时,可以相对简单的抽取并修改.但是,其缺点也十分明显,会造成代码的碎片化,因而是一把双刃剑. 基本形式 var _func = obj.func; obj.func = function() { return _func(); }; 此处,obj的func方法是原始方法.我

Ajax - ASP.NET MVC 4 系列

       ASP.NET MVC 框架中包含一组 Ajax 辅助方法,可以用来创建表单和指向控制器操作的链接,它们是异步的,且不用编写任何脚本代码来实现程序的异步性,但需要引入脚本文件 jquery.unobtrusive-ajax.js,MVC 4 应用程序默认在 _Layout 视图中包含这个脚本:               当然,也可以去除它,而在需要的页面上手动引入:        Ajax 的 ActionLink 方法        在 Razor 视图中,可通过 Ajax 属

解决js(ajax)提交后端的“ _xsrf&#39; argument missing from POST” 的错误

首先先简述一下CSRF: CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/POST的事情——这些事情用户未必知道和愿意做,你可以把它想做HTTP会话劫持. 网站是通过cookie来识别用户的,当用户成功进行身份验证之后浏览器就会得到一个标识其身份的cookie,只要不关闭浏览器或者退出登录,以后访问 这个网站会带上这个cookie.如果这期间浏览器被人控制着请求了这个网站的url

百度统计js被劫持用来DDOS Github的JS注释

前几天在乌云看见了百度统计js被劫持用来DDOS Github,就想看看执行的核心JS是怎么样请求的. 就分析了下JS的执行,发现乌云解析的地方说错了. 文章里面说.大概功能就是关闭缓存后每隔2秒加载一次. 我看了下代码的意思是: 第一次请求,延迟2秒钟请求. 然后,以后的每次请求都以请求开始跟请求结束(请求时间差)作为延时再进行请求. 从第一次执行那段JS的时间内连续五分钟内,就是请求(Attack)时间只有五分钟. 你访问网站速度越快,请求越多.所以github弄个alert()让你的浏览器

详解Ajax

在了解Ajax之前我们先了解一下浏览器和服务器之间如何进行交互的 1.浏览器向服务器发送请求 2.服务器接收到请求信息,根据不同的情况再返回给浏览器不同的信息 3.浏览器接收到信息,输出到当前页面上 上面介绍了浏览器和服务器交互的简单示意图,可以看到在最后一步,浏览器接收到信息后将本页面的内容全部进行了更新,但是一般情况下我们只需要将部分内容进行更新,那怎么办呢?于是服务器干脆将这个页面的内容修改后全部发送给浏览器,于是第2步,服务器向浏览器发送的便是"天上星星有几颗?我不知道啊"这么

【计算机网络学习笔记】什么是cookie以及cookie劫持的基本概念

谨为今后学习参考的笔记.内容来自互联网. Cookie的基本概念: Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie).Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信