Ajax跨域问题研究笔记
作者:fbysss
msn:jameslastchina@hotmail.com
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:Ajax跨域
一.试验准备
修改c:/windows/system32/drivers/etc/hosts文件,加入127.0.0.1 www.a.com www.b.com
Tomcat/webapps下建立crossdomain目录,建立一个空的WEB-INF目录,创建page_on_site_b.jsp和index_on_site_a.jsp。
page_on_site_b.jsp内容如下:
var varonb='this is a var on site b.';
alert('welcome to site b.');
ajax_on_site_a.jsp内容如下:
<mce:script type="text/javascript"><!--
var xmlHttp;
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
xmlHttp.onreadystatechange=callbackFunc;
xmlHttp.open("post","http://www.b.com:8888/crossdomain/page_on_site_b.jsp",true);
xmlHttp.send(null);
function callbackFunc(){
if(xmlHttp.readystate==4 && xmlHttp.status==200){
alert("可以访问");
}
}
// --></mce:script>
二、ajax是不允许跨域访问的。
不同的浏览器在不同情况下表现不一样:
IE中,如果是本地html文件调用远端资源,不会提示任何信息,可以通过。
如果把文件放到网站中,输入http://localhost:8888/crossdomain/ajax_on_site_a.jsp会弹出对话框提示“该页正在访问其控制范围之外的信息。这可能导致安全风险。是否继续?”,点击“是”之后可以正确执行。
如果输入http://www.a.com:8888/crossdomain/ajax_on_site_a.jsp,IE会提示错误“没有权限”
在Firefox浏览器中,根本无法正常执行,会报异常:uncaught exception: Access to restricted URI denied (NS_ERROR_DOM_BAD_URI)
我们不能期待用户能为我们改变什么,只能在程序上面做文章。
三、script标签是可以跨域的。
编写script_on_site_a.jsp:
<mce:script src="http://www.b.com:8888/crossdomain/page_on_site_b.jsp" mce_src="http://www.b.com:8888/crossdomain/page_on_site_b.jsp"></mce:script> //用于引入其他站点资源。至于是js还是jsp无所谓。
<mce:script type="text/
相关文档:
ajax就是javascript 因为以前javascript没有httpXMLrequest对象,从IE5.0之后出现,说白了ajax就是可以用javascript向服务器发送请求,并且能接收服务返回的内容,写ajax程序只要写出一个发送函数和一个接收服务员返回的函数即可,在服务器程序中可以返回字符串也可以返回xml,实例程序http://xsuo.javaeye.com/blog/578637 ......
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术 ......
ajax.open方法中,第3个参数是设同步或者异步。prototype等js类库一般都默认为异步,即设为true。
先说下同步的
情况下,js会等待请求返回,获取status。不需要onreadystatechange事件处理函数。
而异步则需要
onreadystatechange事件处理,且值为4再正确处理下面的内容
......
首先把代码给大家,下面是解释
/**
* 获得XMLHttpRequest对象
*/
function createXHR(){
var x=[function(){return new ActiveXObject("Msxm12.XMLHTTP");},function(){return xmhttp=new ActiveXObject("Microsoft.XMLHTTP");},
&nb ......
Buffalo是国人开发的Ajax框架
它可以使用户在js中调用java代码里的方法.
配置方法:
1. web.xml中配置相关servlet 如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ......