锁定老帖子 主题:javascript的跨域请求
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (12)
|
|||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||||||||||||||||||||||||||
发表时间:2011-01-07
我以前是用JSON格式的
|
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||
发表时间:2011-01-07
楼主讲故事可以,技术一般吧,呵呵
|
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||
发表时间:2011-01-07
最后修改:2011-01-07
yvfish 写道 楼主讲故事可以,技术一般吧,呵呵
哈哈,我可是会骄傲的。我一直以为自己是在小学生水平上。 下面的思路是: 介绍一下动态创建script。 把Ext、Jquery,YUI的的源代码贴出来看看。 介绍下其他几种跨域访问方式,这里怕说多了收不住,弄得喧宾夺主,本末倒置就不好了。 关于内容安排上,大家多提宝贵建议啊。 |
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||
发表时间:2011-01-07
我没明白 怎么就跨域了。。。
|
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||
发表时间:2011-01-08
ak121077313 写道 我没明白 怎么就跨域了。。。
原来的例子举的不好,现在做了下修改。 |
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||
发表时间:2011-01-08
william_ai 写道 话说上个世纪60年代初,在美国加州的森尼维尔市,伴着他的第一声哭声,Brendan Eich开始了他的一生。和普通的孩子一样,他度过了快乐的童年,懵懂的青年时代,也顺利的读完了学士和硕士学位,开始了他程序员的生活。
毕业以后他在Silicon Graphics玩了7年的操作系统和网络编程(难道一个人公司的感情也会有7年之痒)。 离开了他的老东家之后,他来到了MicroUnity Systems Engineering,玩起了microkernel和DSP编程,也是在这时他第一次接触了MIPS架构的gcc R4000端口。 他在Netscape和Mozilla的时候达到了事业上巅峰。1995年4月,他开始玩起了Mocha,经过他一段时间的努力Mocha变得很强大了,于是在同年的9月,一个华丽的变身,更名为livescript并且第一次被装在Netscape Navigator 2.0里。在同年的12月4日,在与Sun公司的的联合声明中,livescript变身到最终形态,JavaScript神兵横空出世。 由于JavaScript神兵太过强大,人们给他加了封印。可是人总是有私心的,于是又留下了一些打开封印的办法。 淡扯完了,下面介绍下封印和如何解开封印。 先说下封印跨域访问,javascript同源策略的限制,即a.com域名下的js无法操作b.com域名下的对象(跨域)。下面举了几个例子,看起来更形象一些。
下面说下解开跨域访问这个封印的几个主要手印。 手印一JSONP,即JSON with Padding。由于封印同源策略的限制,跨域访问被封印了起来。如果需要解开封印进行跨域请求,得使用html的script标记,进行跨域请求,在response中,返回要执行的javascript代码、JSON对象等。这种解开封印进行跨域请求的方式称为JSONP。 如在www.a.com域名下有如下的html文件: <html> <head> </head> <body> <script type="text/javascript" id="script1"></script> <input type="text" id="a" name="a"> <input type="button" value="click" onclick="document.getElementById('script1').src='http://www.b.com/response.js'"> </body> </html> 在www.b.com下的响应的response.js代码 var a=1;//设置变量 alert("Hello World");//调用函数 document.getElementById("a").value="Hello World";//设置表单 大多数时候,为了动态,我们是这么玩的。把www.a.com下的htm改成 <html> <head> </head> <body> <script type="text/javascript" id="script1"></script> <input type="text" id="a" name="a"> <input type="button" value="click" onclick="document.getElementById('script1').src='http://www.b.com/response.jsp'"> </body> </html> 把www.b.com/response.js改成response.jsp <%out.print("var a=1;alert(\"Hello World\");document.getElementById(\"a\").value=\"Hello World\"");%> 虽然URL上看只多了一个p,但是手印JSONP却在解开封印的同时变得更具破坏力。 在手印JSONP的基础上,仙人YUI、Jquery、Dojo、Ext等纷纷研究出了自己的手印。 首先我们看看仙人YUI做了哪些工作。 YUI3.2的jsonp的使用方法如下(下面都是围绕YUI3.2分析的): var url = "http://yuilibrary.com/gallery/api/random?callback={callback}"; function handleJSONP(response){//...}; //... Y.jsonp(url,handleJSONP); //... ps:源码中examples/jsonp/jsonp_gallery.html有详细内容。 结印很快,调用很方便,下面看看是怎么实现的。 下载http://developer.yahoo.com/yui/3/,选择Full Developer Kit版,将yui_3.2.0.zip解压后,在yui/buil/jsonp目录下会看到6个文件:
主要看下jonp.js这个文件,在第8行 YUI.add('jsonp', function(Y) { //... 为YUI这个function动态添加了一个叫jsonp的function。后面的代码中用到了大家耳熟能详的prototype,apply和unshift等JavaScript神兵的秘法,就不一一分析了,直接看第133行到137行之间的代码。 //... Y.Get.script(url, { onFailure: wrap(config.on.failure), onTimeout: wrap(config.on.timeout), timeout : config.timeout }); //... 这里有个Y.Get.script(...)的调用,有url,onFailure,onTimeout和timeout参数,这个到底是做什么的呢? to be continued...... |
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||
发表时间:2011-01-09
看了两天的tzb,明天更新,哈哈
|
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||
发表时间:2011-01-10
快点更新阿。。。
|
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||
发表时间:2011-01-10
最后修改:2011-01-10
谢谢两位投良好的朋友支持我的帖子,同时也谢谢11位投隐藏的朋友百忙之中读了我的帖子,可是,能说下为什么隐藏么,有哪里写的不好或是不对地方?虚心求教,更好的把这个故事讲完。更希望读到这篇贴子的每位朋友也多提意见。
|
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||
发表时间:2011-01-10
字很多,经常处理跨域问题,还没有一个很好的解决方案,收藏一下先
|
|||||||||||||||||||||||||||||||||||
返回顶楼 | |||||||||||||||||||||||||||||||||||