在IE中,每次读取RSS的时候都会有下图所示的提示;而在Firefox中则根本不会读取RSS。
这是因为基于安全的考虑,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
- %>