一种页面跨域访问的方法和装置制造方法及图纸

技术编号:18398886 阅读:24 留言:0更新日期:2018-07-08 19:31
本说明书实施例提供一种页面跨域访问的方法和装置,其中的方法包括:拦截浏览器在打开目标页面的过程中发送的访问请求;访问请求中包括:目标页面对应的第一域名以及请求跨域访问的页面资源对应的第二域名;在确定允许第一域名跨域访问第二域名时,指示浏览器基于CORS在访问请求中设置HTTP请求头;拦截第二域名对应的对方服务器返回的访问响应;在访问响应中,设置用于表示支持第一域名访问第二域名的HTTP响应头,并将设置后的访问响应返回至浏览器,以使得浏览器显示目标页面。

【技术实现步骤摘要】
一种页面跨域访问的方法和装置
本公开涉及计算机
,特别涉及一种页面跨域访问的方法和装置。
技术介绍
在移动端应用上,为增强动态性和更新率,越来越多的应用使用HTML5开发。页面可以通过移动端的浏览器WebView打开。随着页面越来越复杂,有的页面的打开显示还需要浏览器进行跨域访问。例如,域名www.a.com的页面在打开时需要调用www.b.com提供的服务接口。但是,出于安全方面的考虑,WebView通常不允许跨域调用其他页面的对象,比如,www.a.com域名无法访问www.b.com域名下的对象,这将影响到www.a.com的页面的正常显示。可以采用jsonp、CORS(CrossOriginResourceSharing,跨域资源共享)等多种方案来实现跨域访问,以CORS为例:用户在请求打开www.a.com下的页面时,浏览器可以在页面请求的HTTP头添加字段Origin为https://www.a.com,而访问的www.b.com的服务器需要在响应中设置Access-Control-Allow-Origin为包含https://www.a.com,这样页面请求才能成功调用www.b.com上的接口。但是这种方案需要页面请求侧的浏览器与访问的对方服务器合作实现,对方服务器也需要配置准许访问的策略。
技术实现思路
有鉴于此,本公开提供一种页面跨域访问的方法和装置,以使得跨域访问的实现方法更加简单。具体地,本说明书一个或多个实施例是通过如下技术方案实现的:第一方面,提供一种页面跨域访问的方法,所述方法包括:拦截浏览器在打开目标页面的过程中发送的访问请求,所述访问请求用于请求获取目标页面显示所需的页面资源;所述访问请求中包括:所述目标页面对应的第一域名、以及请求跨域访问的所述页面资源对应的第二域名;在确定允许所述第一域名跨域访问第二域名时,指示浏览器基于跨域资源共享CORS在所述访问请求中设置HTTP请求头;拦截所述第二域名对应的对方服务器返回的访问响应,所述访问响应中包括:所述对方服务器返回的所述页面资源;在所述访问响应中,设置用于表示支持所述第一域名访问第二域名的HTTP响应头,并将设置后的所述访问响应返回至浏览器,以使得所述浏览器根据所述页面资源显示所述目标页面。第二方面,提供一种页面跨域访问的装置,所述装置包括:请求拦截模块,用于拦截浏览器在打开目标页面的过程中发送的访问请求,所述访问请求用于请求获取目标页面显示所需的页面资源;所述访问请求包括:所述目标页面对应的第一域名、以及请求访问的所述页面资源对应的第二域名;请求设置模块,用于在确定允许所述第一域名访问第二域名时,指示浏览器基于跨域资源共享CORS在所述访问请求中设置HTTP请求头;响应拦截模块,用于拦截所述第二域名对应的对方服务器返回的访问响应,所述访问响应中包括:所述对方服务器返回的所述页面资源;响应设置模块,用于在所述访问响应中,设置用于表示支持所述第一域名访问第二域名的HTTP响应头,并将设置后的所述访问响应返回至浏览器,以使得所述浏览器根据所述页面资源显示所述目标页面。第三方面,提供一种页面跨域访问的设备,所述设备包括存储器、处理器,以及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行指令时实现以下步骤:拦截浏览器在打开目标页面的过程中发送的访问请求,所述访问请求用于请求获取目标页面显示所需的页面资源;所述访问请求中包括:所述目标页面对应的第一域名、以及请求访问的所述页面资源对应的第二域名;在确定允许所述第一域名访问第二域名时,指示浏览器基于跨域资源共享CORS在所述访问请求中设置HTTP请求头;拦截所述第二域名对应的对方服务器返回的访问响应,所述访问响应中包括:所述对方服务器返回的所述页面资源;在所述访问响应中,设置用于表示支持所述第一域名访问第二域名的HTTP响应头,并将设置后的所述访问响应返回至浏览器,以使得所述浏览器根据所述页面资源显示所述目标页面。本说明书一个或多个实施例的页面跨域访问的方法和装置,通过由客户端指示浏览器设置CORS的HTTP请求头,并对对方服务器的响应设置HTTP响应头,使得页面开发不需要再考虑跨域访问的限制,对方服务器也不再需要进行CORS的跨域配置,从而使得跨域访问的实现方法更加简单。附图说明为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本说明书一个或多个实施例提供的一种CORS跨域访问的系统架构图;图2为本说明书一个或多个实施例提供的一种跨域访问的方法的流程图;图3为本说明书一个或多个实施例提供的一种跨域访问的装置的结构图。具体实施方式为了使本
的人员更好地理解本说明书一个或多个实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是一部分实施例,而不是全部的实施例。基于本说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。跨域访问是一个经常遇到的问题。例如:域名A(http://a.example)的某Web应用程序中通过<img>标签引入了域名B(http://b.foo)站点的某图片资源(http://b.foo/image.jpg)。这就是一个跨域请求。但是,基于同源策略,浏览器不允许跨域调用其他域名下的对象,又例如,a.com域名下的js无法操作b.com或是c.a.com域名下的对象。为了解决跨域访问的问题,可以采用多种方法,本说明书一个或多个实施例提供的跨域访问的方法,可以是在CORS方案上所做的改进。参见图1所示的CORS跨域访问的系统架构图,如图1所示,浏览器11可以加载显示页面,例如,该浏览器可以是用户手机APP12中显示页面所用的WebView控件。并假设一个待显示的目标页面13是域名www.a.com下的页面,比如是https://www.a.com/A.html。并假设在该目标页面13的显示过程中需要加载一个图片14,而这个图片14是另一个域名www.b.com下的资源,存储在对方服务器15中。https://www.b.com/B.json是这个图片14的一个对外访问接口。本说明书一个或多个实施例提供的跨域访问的方法,将使得浏览器能够成功调用访问接口B.json,由对方服务器15中获取到图片14,以显示目标页面13。如下结合图2的流程图来描述该方法:在步骤200中,APP获取允许跨域访问的白名单。在一个例子中,可以在用户打开手机上的APP时,触发APP同步白名单。例如,APP可以由APP网关获取白名单。白名单中可以记录允许跨域访问的域名对之间的访问关系,如下表1示例部分白名单中记录的访问关系:表1白名单请求域名被请求访问的域名www.a.comwww.b.com若第一域名访问第二域名的访问关系存本文档来自技高网
...

【技术保护点】
1.一种页面跨域访问的方法,所述方法包括:拦截浏览器在打开目标页面的过程中发送的访问请求,所述访问请求用于请求获取目标页面显示所需的页面资源;所述访问请求中包括:所述目标页面对应的第一域名、以及请求跨域访问的所述页面资源对应的第二域名;在确定允许所述第一域名跨域访问第二域名时,指示浏览器基于跨域资源共享CORS在所述访问请求中设置HTTP请求头;拦截所述第二域名对应的对方服务器返回的访问响应,所述访问响应中包括:所述对方服务器返回的所述页面资源;在所述访问响应中,设置用于表示支持所述第一域名访问第二域名的HTTP响应头,并将设置后的所述访问响应返回至浏览器,以使得所述浏览器根据所述页面资源显示所述目标页面。

【技术特征摘要】
1.一种页面跨域访问的方法,所述方法包括:拦截浏览器在打开目标页面的过程中发送的访问请求,所述访问请求用于请求获取目标页面显示所需的页面资源;所述访问请求中包括:所述目标页面对应的第一域名、以及请求跨域访问的所述页面资源对应的第二域名;在确定允许所述第一域名跨域访问第二域名时,指示浏览器基于跨域资源共享CORS在所述访问请求中设置HTTP请求头;拦截所述第二域名对应的对方服务器返回的访问响应,所述访问响应中包括:所述对方服务器返回的所述页面资源;在所述访问响应中,设置用于表示支持所述第一域名访问第二域名的HTTP响应头,并将设置后的所述访问响应返回至浏览器,以使得所述浏览器根据所述页面资源显示所述目标页面。2.根据权利要求1所述的方法,所述确定允许第一域名访问第二域名,包括:在所述拦截浏览器发送的页面访问请求之前,获取允许跨域访问的白名单,所述白名单中包括:允许跨域访问的域名对之间的访问关系;若所述第一域名访问第二域名的访问关系存储于所述白名单内,则确定允许所述第一域名访问第二域名。3.根据权利要求2所述的方法,所述访问关系中包括:一个第一域名与多个第二域名之间的访问关系。4.根据权利要求1所述的方法,所述设置用于表示支持所述第一域名访问第二域名的HTTP响应头,包括:在所述HTTP响应头的origin字段,设置允许访问当前的第一域名;或者,在所述HTTP响应头的origin字段,设置允许访问所有域名。5.根据权利要求1所述的方法,在所述拦截浏览器在打开目标页面的过程中发送的访问请求之后,所述方法还包括:若确定不允许所述第一域名访问第二域名,则对所述访问响应不设置所述HTTP响应头,以使得浏览器拒绝显示所述页面资源。6.一种页面跨域访问的装置,所述装置包括:请求拦截模块,用于拦截浏览器在打开目标页面的过程中发送的访问请求,所述访问请求用于请求获取目标页面显示所需的页面资源;所述访问请求包括:所述目标页面对应的第一域名、以及请求访问的所述页面资源对应的第二域名;请求设置模块,用于在确定允许所述第一域名访问第二域名时,指示浏览器基于跨域资源共...

【专利技术属性】
技术研发人员:陈文鸿管维刚吕晨晨
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1