Ajax跨域问题研究笔记
作者:fbysss 一.试验准备
page_on_site_b.jsp内容如下:
ajax_on_site_a.jsp内容如下:
copy
二、ajax是不允许跨域访问的。 不同的浏览器在不同情况下表现不一样:
我们不能期待用户能为我们改变什么,只能在程序上面做文章。 编写script_on_site_a.jsp: copy
浏览器中输入 http://www.a.com:8888/crossdomain/script_on_site_a.jsp 四、其他 1.在实际应用中,如果url带参数,可以采用动态创建script元素,动态指定src来解决。 2.还有一种方法,就是在www.a.com站点中增加一个servlet,通过servlet调用urlConnection来获取任意站点的资 源,再把结果传回,站点a中的页面只需要调用本地的servlet,避免了跨域。但这样的方式,会带来本地服务器的 额外开销。 式)并以参数的形式传递给这个客户端的js函数并执行这个函数,前提是需要服务器端的数据输出格式必须是JSON 。 4.iframe可以跨域,但存在一些问题。 解决办法可参看http://liuhaixiao.javaeye.com/blog/81959(未测试) 5.如果所有资源都可以自己控制,可以考虑使用document.domain来解决。 6.最新进展:W3C 跨域请求标准已经出台,详见《AJAX(XMLHttpRequest)进行跨域请求方法详解》http://www.chinaz.com/Program/XML/01111035112010.html 7.有专门解决ajax跨域问题的js库: http://www.ajax-cross-domain.com/ 五、思考: 。不过,script标签同样可以做到这一点,为啥不被禁止呢?呵呵,这个问题有待考证。 在点击按钮的时候,动态创建script标签,获取远端资源。但有局限性:不是真正的ajax,只能使用get方式,返回的结果,必须输出script才有意义。 3.参考文章 注:不管怎么搞,如果你要访问的跨域资源是未知的(不知道返回什么结果),跨域往往是不能成功的。因为返回的东西只有是合法的纯javascript,才能被读取。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |