做过跨越多个网站的Ajax开发的朋友都知道,如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容,如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。Ajax的跨域访问问题是现有的Ajax开发人员比较常遇到的问题。
IE对于跨域访问的处理是,弹出警告框,提醒用户。如果用户将该网站纳入可信任网站,或者调低安全级别,那么这个问题IE就不会在提醒你。
FireFox等其它非微软的浏览器遇到跨域访问,则解决方案统一是拒绝访问。
有人说,IE是主流浏览器,只要它能正常使用就好了。此言差已,IE虽然能够处理,但是是有前提的,要么用户不厌其烦地在页面弹出警告框之后点击是(点击否就不执行该Ajax调用了),要么用户将该网站纳入可信任站点。这两种做法,在企业管理系统的应用中倒是比较常见,因为系统管理员可以以行政手段保证用户的行为。但是对于互联网上的网站或者门户开发,这种做法则不行。
最近遇到了这个问题,需要在跨域访问结束之后完成使主窗口出现一些特效,搜索了一些资料,通过不断尝试以及在不同浏览器中进行兼容性测试,找到了几个可行的方案:
1、Web代理的方式。即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果。此方案可以解决现阶段所能够想到的多数跨域访问问题,但要求A网站提供Web代理的支持,因此A网站与B网站之间必须是紧密协作的,且每次交互过程,A网站的服务器负担增加,且无法代用户保存session状态。
2、on-Demand方式。MYMSN的门户就用的这种方式,不过MYMSN中不涉及跨域访问问题。动态控制script标记的生成,通过修改script标记的src属性完成对跨域页面的调用。此方案存在的缺陷是,script的src属性完成该调用时采取的方式时get方式,如果请求时传递的字符串过大时,可能会无法正常运行。不过此方案非常适合聚合类门户使用。
3、iframe方式。查看过醒来在javaeye上的一篇关于跨域访问的帖子,他提到自己已经用iframe的方式解决了跨域访问问题。数据提交跟获取,采用iframe这种方式的确可以了,但由于父窗口与子窗口之间不能交互(跨域访问的情况下,这种交互被拒绝),因此无法完成对父窗口效果的影响。
4、用户本地转储方式:IE本身依附于windows平台的特性为我们提供了一种基于iframe,利用内存来“绕行”的方案,即两个window之间可以在客户端通过windows剪贴板的方式进行数据传输,只需要在接受数据的一方设置Interval进行轮询,获得结果后清除Interval即可。FF的平台独立性决定了它不支持剪贴板这种方式,而以往版本的FF中存在的插件漏洞又被fixed了,所以FF无法通过内存来完成暗渡陈仓。而由于文件操作FF也没有提供支持(无法通过Cookie跨域完成数据传递),致使这种技巧性的方式只能在IE中使用。
5、我自己用于解决这类问题的方式:结合了前面几种方式,在访问A网站时,先请求B网站完成数据处理,再根据返回的标识来获得所需的结果。这种方法的缺点也很明显,B网站的负载增大了。优点,对session也实现了保持,同时A网站与B网站页面间的交互能力增强了。最重要的一点,这种方案满足了我的全部需要。
总结一下,以上方案中可选择的情况下,我最推荐on-Demand方式,在不需要提交大量数据的情况下,这种方式能够解决您的大部分问题。
发表评论
-
说说如何写分析类文章
2006-02-07 00:59 2010最近两周,在csdn上看到好几篇教人如何写文章的blog,例如 ... -
第三方点评如何发展
2006-02-07 01:02 1165在电子商务世界杂志刊登的《中国电子商务2006年八大电子商务 ... -
博客营销
2006-03-05 10:49 1592本文是我为论文的写作 ... -
广州UG亲历记
2006-03-13 01:30 1007User Group活动我听说的次数很多,亲身参加还是第一次: ... -
买了国外的虚拟主机
2006-05-11 02:29 1084人总是很复杂的,没有 ... -
如何获得网站实时代码
2006-05-15 00:12 1289看《Ajax修炼之道》一书的时候,第一次认识了Instant ... -
Javascript的认识层次
2006-08-17 10:35 1015Javascript的普及应用率远比Java高,它与CSS和H ... -
Spring的疑问若干
2006-08-25 07:25 1056关于spring的疑问若干,先提在这。 1、新手达到什么程度可 ... -
攀登爪哇山
2006-08-28 00:43 951以前给别人做过Java方面 ... -
怀平凡心做小事情
2006-08-30 23:21 1096与人交流,逛逛blog,偶 ... -
写在“轻量级开发”聊天活动之后
2006-09-02 07:41 1183因为小蛇,我之前为CSDN ... -
九月最热门的25个开源项目
2006-09-13 08:13 43241. Gaim 即时通讯项目,支持AIM, ICQ, Yaho ... -
EJB3.0的目标
2006-09-18 08:32 1775很多Java开发人员不了解 ... -
别把web开发高手不当高手
2006-09-24 17:23 1050继上次百度被攻击之后 ... -
hibernate学习要点指引
2006-10-24 08:14 1365最近几天,团队有几个人在blog上开始贴自己学习hiberna ... -
Google所有服务列表(2006年10月27日版)
2006-10-25 21:55 2107今天由于搜集Google相关资料的关系,对互联网上的Go ... -
Google的API介绍
2006-10-27 10:26 14712关于Google的APIs,大 ... -
Google搜索风云榜
2006-10-28 00:43 5858在搜索趋势服务领域,百度有百度指数,Google有Google ... -
互联网的思维
2006-11-02 23:14 1566中国网民数量已经突破1.25亿了,光从数量的角度来看,大众已经 ... -
about google fans
2006-11-04 20:31 1744不知道百度的拥趸是否有这么疯狂,但我通过搜索已经了解了goog ...
相关推荐
为了解决这一问题,并确保在跨域场景下可以正确地处理Cookie信息,本文将详细介绍几种常用的跨域访问解决方案及其在处理Cookie方面的应用。 #### 一、跨域访问解决方案概述 跨域访问是指一个域名下的文档或脚本...
总的来说,jQuery通过JSONP提供了一种简单易用的跨域解决方案,使得前端开发人员能够方便地从不同域名的服务器获取数据,丰富了Web应用的功能。然而,由于JSONP的本质是脚本注入,它可能会带来安全风险,如XSS攻击,...
在Web开发中,跨域(Cross-Origin)是一个关键的话题,涉及到浏览器的安全策略和Web应用的交互能力。跨域通信解决方案的课程旨在深入讲解这一领域的核心概念和技术,以便开发者能够理解和解决实际开发中遇到的问题。...
JavaScript跨域访问解决方案 在Web开发中,JavaScript的同源策略是浏览器为了保障用户安全而实施的一项重要机制。它限制了脚本只能访问与当前页面具有相同协议(如http或https)、主机名和端口号的资源。然而,在...
JS 跨域访问解决方案总结为我们提供了一种更安全、方便的跨域请求方式来融合(Mashup)自己的 Web 应用。这种方式可以将请求分摊到不同的服务器,减轻单个服务器压力以提高响应速度;另外一种好处是可以将不同的业务...
JavaScript跨域访问解决方案 在Web开发中,由于浏览器的安全策略——同源策略(Same Origin Policy),不同源的脚本之间无法直接通信或访问彼此的资源。同源策略规定,只有当两个URL的协议、域名和端口都相同时,...
1. 创建一个包含MVC项目(Web)和Web API项目(WebApiCORS)的解决方案。 2. 在MVC项目中,如Home控制器的Index视图,使用Ajax向WebApiCORS发起跨域请求。 3. 在WebApiCORS项目中,创建一个如ChargingController的...
JavaScript跨域访问解决方案 在Web开发中,由于同源策略的限制,JavaScript通常只能与同一协议、域名和端口的服务器进行通信。然而,随着Web应用程序的复杂性和交互性增加,跨域请求变得越来越普遍,比如加载外部...
标题《JS跨域访问解决方案总结.pdf》指明文档的核心内容是关于JavaScript跨域访问问题的解决方法。跨域访问问题是指由于浏览器的同源策略限制,网页中JavaScript代码出于安全原因不能访问另一个源(域名、协议或端口...
在开发Web应用时,API(应用程序接口)是服务器与客户端之间通信的重要桥梁。Web API通常由后端服务提供,允许前端应用获取数据或执行特定功能。然而,由于浏览器的同源策略限制,不同源的HTTP请求(即跨域请求)会...
本文将深入探讨WebApi跨域访问的原理、解决方案以及如何在ASP.NET WebApi项目中实现CORS。 一、理解同源策略 同源策略是浏览器为了保护用户信息安全而实施的一项安全机制,它禁止一个源(通常是网页)的JavaScript...
相比传统的JSONP方案,CORS提供了更安全、更灵活的跨域解决方案。 **ASP.NET MVC4中的CORS实现** 在ASP.NET MVC4中,我们可以使用`System.Web.Http.Cors`命名空间来实现CORS。首先,确保安装了`Microsoft.AspNet....
然而,随着Web应用的发展,跨域问题常常成为开发过程中的一个挑战。"跨域"是指由于浏览器的安全策略,一个源(Origin,由协议、域名和端口组成)的文档不能通过JavaScript直接访问另一个源的资源。为了解决这个问题...
在IT行业中,尤其是在Web开发领域,跨域问题是一个常见的挑战,尤其当涉及到GIS(地理信息系统)服务时,如Geoserver...通过这个过程,我们可以为不同的客户端提供安全、可靠的跨域数据访问,从而实现更灵活的GIS应用。
总之,JSONP和CORS都是解决浏览器同源策略限制的策略,JSONP适用于简单场景,而CORS提供更全面的控制和安全性,是现代Web应用中更为推荐的跨域解决方案。理解和掌握这两种技术对于进行前后端分离的Web开发至关重要。
理解并掌握这些跨域解决方案对于JavaScript开发者来说至关重要,因为它们可以帮助我们在构建复杂Web应用时克服浏览器的同源策略限制,实现更丰富的功能。在实际项目中,应根据需求选择最适合的跨域策略,确保安全性...