在IE中,每次讀取RSS的時候都會有所示的提示;而在Firefox中則根本不會讀取RSS。
{
img_auto_size(this,450,true);
}" align="baseline" twffan="done" src="http://esoft.bokee.com/inc/AJAXProxy1.jpg">
這是因為基於安全的考慮,AJAX只能訪問本域下的資源,而不能跨域訪問。也就是說,domain1.com網站中的AJAX只能訪問domain1.com網站下的資源,而不能跨域訪問domain2.com網站中的資源.這就是AJAX跨域問題.
解決AJAX跨域問題有幾種方法,這裡我們只討論最常用的一種方法---使用AJAX代理解決AJAX跨域問題. 即在domain1.com網站中使用動態網頁(ASP,PHP,JSP等)作為代理頁面讀取domain2.com網站中的資源, 然後在domain1.com網站中使用AJAX讀取本域下的代理頁面. 我們以ASP為例來介紹AJAX代理:
AJAX代理---ASP(JAVAScript)
AJAXProxy.asp
- <%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
- <%
- var http1=Server.CreateObject("Microsoft.XMLHTTP");
- var RSS_URL=Request("RSS_URL");
- http1.Open("GET",RSS_URL,false);
- Response.ContentType="text/xml";
- http1.send(null);
- if(http1.readyState==4){
- Response.BinaryWrite(http1.Responsebody);
- }
- http1=null;
- %>
AJAX代理---ASP(VBScript)
AJAXProxy.asp
- <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
- <%
- Function send_request(url)
- Set Retrieval = CreateObject("Microsoft.XMLHTTP")
- With Retrieval
- .Open "Get", url, False, "", ""
- .Send
- send_request = .ResponseBody
- End With
- Response.ContentType="text/xml"
- Set Retrieval = Nothing
- End Function
-
- url=Request("RSS_URL")
- Response.BinaryWrite send_request(url)
- Response.Flush
- %>
http://developer.yahoo.com/javascript/howto-proxy.html