- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用script标签实现的跨域名AJAX请求(ExtJS)
利用script标签实现的跨域名AJAX请求(ExtJS)
/hjf1223/archive/2008/05/31/1211221.html在AJAX应用环境中,由于安全的原因,浏览器不允许XMLHttpRequest组件请求跨域资源。在很多情况下,这个限制给我来带来的诸多不便。很多同行,研究了各种各样的解决方案:
1.通过修改document.domain和隐藏的IFrame来实现跨域请求。这种方案可能是最简单的一种跨域请求的方案,但是它同样是一种限制最大的方案。首先,它只能实现在同一个顶级域名下的跨域请求;另外,当在一个页面中还包含有其它的IFrame时,可能还会产生安全性异常,拒绝访问。
2.通过请求当前域的代理,由服务器代理去访问另一个域的资源。XMLHttpRequest通过请求本域内的一个服务器资源,将要访问的目标资源提供给服务器,交由服务器去代理访问目标资源。这种方案,可以实现完全的跨域访问,但是开发,请求过程的消费会比较大。
3.通过HTML中可以请求跨域资源的标签引用来达到目的,比如Image,Script,LINK这些标签。在这些标签中,Script无疑是最合适的。在请求每一个脚本资源时,浏览器都会去解析并运行脚本文件内定义的函数,或需要马上执行的JavaScript代码,我们可以通过服务器返回一段脚本或JSON对象,在浏览器解析执行,从而达到跨域请求的目的。使用script标签来实现跨域请求,只能使用get方法请求服务器资源。并且传参的长度也受到地址栏长度的限制。
这里,我们来介绍第三种方案。先来看一段在网络上找到的例子(具体来源已经不得而知了,如果有人知道请提供原文链接,谢谢):
JavaScript:
1: var scriptBlock = document.createElement(script);
2:?
3: function StartGet()
4: {
5: scriptBlock.src = ;
6: scriptBlock.src = http://Domain2/GetData.aspx;
7: scriptBlock.type = text/javascript;
8: scriptBlock.language = javascript;
9: document.getElementsByTagName(head)[0].appendChild(scriptBlock);
10: scriptBlock.onreadystatechange = ReturnData;
11: }
12:?
13: function ReturnData()
14: {
15: //alert(scriptBlock.readyState);
16:?
17: //uninitialized Object is not initialized with data.
18: //loading Object is loading its data.
19: //loaded Object has finished loading its data.
20: //interactive User can interact with the object even though it is not fully loaded.
21: //complete Object is completely initialized.
22:?
23: if(loaded == scriptBlock.readyState)
24: {
25: var div = document.getElementById(htmldiv);
26: div.innerHTML = ject[0].name; //a是返回的json里面的变量
27: }
28: }
通过调用StartGet方法,发送一个跨域请求。用onreadystatechange事件监听请求结束事件,并且将返回的结果显示到页面上。
在这个事件函数中,a的对象是从何而来的呢?它就是通过http://Domain2/GetData.aspx输出的一段JSON对象,并被浏览器解析过。看看下面的服务器端的代码就应该明白了。
ASP.NET:
protected void
您可能关注的文档
最近下载
- 2025江苏南京农业大学新校区建设指挥部、基本建设处人员招聘10人考试备考试题及答案解析.docx VIP
- 河阴死者墓志义例与北魏后期墓志制作.doc VIP
- 2025江苏南京农业大学新校区建设指挥部、基本建设处人员招聘10人考试模拟试题及答案解析.docx VIP
- 2025-2026学年西师大版小学数学四年级上册教学计划及进度表.docx
- 2025江苏南京农业大学新校区建设指挥部、基本建设处人员招聘10人笔试备考题库及答案解析.docx VIP
- 2025江苏南京农业大学新校区建设指挥部、基本建设处人员招聘10人考试备考题库及答案解析.docx VIP
- 中国低空经济应用场景研究报告(2025).pptx VIP
- 科技英语语法篇 .pptx VIP
- 石文操作手册.pdf VIP
- 二零二五年度军队后勤保障中心部队食堂食材供应合同.docx VIP
文档评论(0)