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 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。本文的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 —— 从总体概述到细节的讨论 —— 使高效的 Web 开发成为现实。他还揭开了 Ajax 核心概念的神秘面纱,包括 ......
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术 ......
Ajax的无刷新分页
这里以两个文件进行代码显示一个是ajax分页实现的文件,另一个是分页类文件
文件1.ajax_page.php
<script type="text/javascript" language="javascript">
function createXMLHttp()
{
var browser=navigator.appName; //get the current browser
......
使用AJAX中的UpdatePanel
在UpdatePanel中添加一GridView,添加了Row_Updating事件: protected void gvUnitList_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = gvUnitList.Rows[e.RowIndex];
UnitModel unit = new UnitModel();
unit.UnitID = Convert.ToI ......
首先把代码给大家,下面是解释
/**
* 获得XMLHttpRequest对象
*/
function createXHR(){
var x=[function(){return new ActiveXObject("Msxm12.XMLHTTP");},function(){return xmhttp=new ActiveXObject("Microsoft.XMLHTTP");},
&nb ......