什么是JS跨域访问

什么是JS跨域访问,第1张

ajax或者iframe指向的地址中,二级域名、端口、协议必须与主页面完全相同,否则就算跨域

比如

a.baidu.com访问b.baidu.com 是跨域;

a.baidu.com:8080访问a.baidu.com:80 是跨域;

http://a.baidu.com访问https://a.baidu.com 是跨域

ajax跨域,两种办法:后端写个代理接口,让后端去抓数据;或者与对方合作,用jsonp等方式传送数据

iframe跨域问题有点多,必须要得到iframe内部页面的配合才可能通信,方法也比较多:

1,假写hash值通信,父子页面各自建立轮询去检测iframe中url的hash值,通过值来通信

2,利用HTML5的postMessage,不过注意这个也是异步的

3,利用IE6\7中对navigator的bug,我前同事发现的,在ie6/7中,父子页面使用的window.navigator是同一个东西,父页面改了,子页面也会跟着变;

4,iframe中嵌套一层与顶层页面同域的页面,比如a中套b,b中套c,其中a、c同域,b做出改变后通过url给c传值,c中 *** 作top对象也就是a,由于同域,所以不会有问题

JS获取后端数据,通常,使用的是ajax技术。具体可以百度下js(或者jquery) ajax。ajax技术的优点是无页面刷新,通过后台接口获取数据。需要注意的是,一般而言,ajax是不支持跨域的。如果想要跨域访问后端数据,可以使用jsonp。而jsonp因为默认传输类型是get,所以不支持向后端传递大数据!

javascript跨域调用webservice写法如下:

//WebService地址及方法名称。其中GetUserName是要调用的方法

var URL = "UserManage/UserInfo.asmx/GetUserName"

var Params = "accounts=leftfist"//传给WebService的参数

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")

xmlhttp.Open("POST",URL, false)//用POST方法

xmlhttp.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")

xmlhttp.SetRequestHeader ("Content-Length",Params.length)

xmlhttp.send(Params)

if( xmlhttp.Status == 200 ){//200代表成功

var res = xmlhttp.responseXML//得到WebService传回的结果

return res.childNodes[1].text + ","

}

return xmlhttp.responseText


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10715015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存