CN107391568B - 突破跨域请求限制的方法及其系统 - Google Patents
突破跨域请求限制的方法及其系统 Download PDFInfo
- Publication number
- CN107391568B CN107391568B CN201710455883.9A CN201710455883A CN107391568B CN 107391568 B CN107391568 B CN 107391568B CN 201710455883 A CN201710455883 A CN 201710455883A CN 107391568 B CN107391568 B CN 107391568B
- Authority
- CN
- China
- Prior art keywords
- request
- cross
- domain
- browser
- response
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种突破跨域请求限制的方法及其系统,方法包括分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系;当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法;浏览器将跨域请求的请求对象中的各信息依据第一映射关系包装成由对应key组成的请求内容后发送至服务端;服务端接收请求内容后,在前置过滤器上依据第一映射关系将所述请求内容中各key对应的项对应赋值给服务端接收的请求内容中的请求对象的各信息;服务端依据赋值后的请求对象进行响应。本发明能够使IE9以下不支持跨域资源共享的浏览器实现跨域请求;而且兼容大多数请求方法。
Description
技术领域
本发明涉及浏览器请求领域,具体说的是一种突破跨域请求限制的方法及其系统。
背景技术
当前浏览器远程请求需要遵守同源策略(域名,协议,端口相同)。现有浏览器可以通过配置跨域资源共享(cors)策略来突破同源策略,但是IE9以下的浏览器并不支持跨域资源共享(cors)策略,大多以JSONP和xdomainrequest对象来进行跨域的远程调用,当这中跨域调用存在以下问题:JSONP请求方法只支持GET,使用xdomainrequest对象只支持GET和POST,无法http大量请求方法,且JSONP和xdomainrequest都无法修改请求的头部,导致无法跟restful相关api接口对应。
因此,有必要提供一种能够适用于IE9以下浏览器实现跨域请求的方法。
发明内容
本发明所要解决的技术问题是:提供一种适用于IE9以下不支持跨域资源共享的浏览器实现跨域请求的方法及其系统。
为了解决上述技术问题,本发明采用的技术方案为:
一种突破跨域请求限制的方法,包括:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法;
浏览器将跨域请求的请求对象中的各信息依据所述第一映射关系包装成由对应key组成的请求内容后发送至服务端;
服务端接收所述请求内容后,在前置过滤器上依据所述第一映射关系将所述请求内容中各key对应的项对应赋值给服务端接收的请求内容中的请求对象的各信息;
服务端依据赋值后的请求对象进行响应,得到响应内容;
服务端将响应内容中的响应对象的各信息依据所述第二映射关系包装成由对应key组成的响应内容后发送至浏览器;
浏览器接收所述响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息。
本发明提供的另一个技术方案为:
一种突破跨域请求限制的系统,包括浏览器和服务端,所述浏览器包括第一计算机可读存储介质,服务端包括第二计算机可读存储介质,所述第一计算机可读存储介质和第二计算接可读存储介质上存储有计算机程序,第一计算机可读存储介质上存储的程序被处理器执行时实现以下步骤:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法;
浏览器将跨域请求的请求对象中的各信息依据所述第一映射关系包装成由对应key组成的请求内容后发送至服务端;
浏览器接收响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息;
第二计算机可读存储介质上存储的程序被处理器执行时实现以下步骤:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
服务端接收请求内容后,在前置过滤器上依据所述第一映射关系将所述请求内容中各key对应的项对应赋值给服务端接收的请求内容中的请求对象的各信息;
服务端依据赋值后的请求对象进行响应,得到响应内容;
服务端将响应内容中的响应对象的各信息依据所述第二映射关系包装成由对应key组成的响应内容后发送至浏览器。
本发明的有益效果在于:本发明通过分别建立请求对象中各信息字典对象形式的第一映射关系以及响应对象中各信息字典对象形式的第二映射关系;然后在不支持跨域资源共享策略的浏览器发起跨域请求时,将请求内容中的请求对象的各信息依据第一映射关系,分别以字典对象的形式包装成请求内容发送至服务端,服务端在前置处进行对应值的映射,获取真实的请求对象后进行响应;而后同样对响应内容依据第二映射关系进行包装反馈至浏览器,浏览器进行对应值的映射后获取响应结果。本发明通过分别协定请求对象与响应对象的映射关系,再将请求内容和响应内容依据映射关系转变为接收方可接收的规格进行传输,而后进行对应值映射还原,突破除了不同协议间调用外的其他跨域限制,实现跨域获取数据。
附图说明
图1为本发明一种突破跨域请求限制的方法的流程示意图;
图2为本发明实施例一的流程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:分别协定请求对象与响应对象字典对象形式的映射关系,将请求内容和响应内容依据映射关系转变为接收方可接收的规格进行传输,而后进行对应值映射还原,实现跨域获取数据。
本发明涉及的技术术语解释:
请参照图1,本发明提供一种突破跨域请求限制的方法,包括:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法;
浏览器将跨域请求的请求对象中的各信息依据所述映射关系包装成由对应key组成的请求内容后发送至服务端;
服务端接收所述请求内容后,在前置过滤器上依据所述映射关系将所述请求内容中各key对应的项对应赋值给服务端接收的请求内容中的请求对象的各信息;
服务端依据赋值后的请求对象进行响应,得到响应内容;
服务端将响应内容中的响应对象的各信息依据所述映射关系包装成由对应key组成的响应内容后发送至浏览器;
浏览器接收所述响应内容后,依据所述映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息。
从上述描述可知,本发明的有益效果在于:在不支持跨域资源共享cors的IE9以下的浏览器发起跨域请求的时候,能够实现跨域获取数据。
进一步的,所述修改跨域请求的请求方法为浏览器支持的请求方法,具体为:
将跨域请求中为DELETE、PUT、PATCH的请求方法修改为POST的请求方法,将HEAD的请求方法修改为GET的请求方法;
若跨域请求为有修改响应头部和需要提交cookie,且请求方法为GET的请求,则将其请求方法修改为POST。
由上述描述可知,能够支持大多数http请求方法,支持有修改响应头部和需要提交cookie,请求方法为GET的跨域请求,能够适用更多类型的请求。
进一步的,使用xdomainrequest对象修改跨域请求的请求方法和发送请求内容。
由上述描述可知,使用xdomainrequest进行请求修改可以突破固有限制,满足现有restful api的要求,同时能够携带将原不可修改的响应头部进行传递。
进一步的,所述请求对象包括请求地址、请求头部、请求方法、请求体和cookie信息;所述响应对象包括响应码、响应体、响应头部、响应码描述字符。
进一步的,所述当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法,具体为:
浏览器对xmlhttprequest接口进行重写,得到新的xmlhttprequest接口;
声明新的xmlhttprequest接口覆盖旧的xmlhttprequest接口,同时新的xmlhttprequest接口保持原有的使用方式;
当浏览器发起请求,则通过新的xmlhttprequest接口判断所述请求是否为跨域请求以及浏览器是否支持跨域资源共享,若不是跨域请求或支持跨域资源共享,则直接调用旧的xmlhttprequest接口,将请求内容发送至旧的xmlhttprequest接口;若浏览器不支持跨域资源共享且为跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法。
由上述描述可知,重写xhr接口,同时保持原有的使用方式,实现xhr接口同时具有处理非跨域请求和跨域请求的能力;在发起非跨域请求时能依据原协议快速进行处理,有效提高请求处理效率。
进一步的,所述浏览器接收所述响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息,包括:
浏览器接收所述响应内容后进行拆包,依据第二映射关系获取其中以响应码对应英文名称status为key所对应的项,若ststus对应的项为200-299,则调用成功回调;若ststus对应的项为400-599,则调用响应失败的回调。
由上述描述可知,实现浏览器能够正确分辨响应成功或失败,而非在响应错误时无响应内容,使客户端掌握响应结果。
本发明提供的另一个技术方案为:
一种突破跨域请求限制的系统,包括浏览器和服务端,所述浏览器包括第一计算机可读存储介质,服务端包括第二计算机可读存储介质,所述第一计算机可读存储介质和第二计算接可读存储介质上存储有计算机程序,第一计算机可读存储介质上存储的程序被处理器执行时实现以下步骤:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法;
浏览器将跨域请求的请求对象中的各信息依据所述第一映射关系包装成由对应key组成的请求内容后发送至服务端;
浏览器接收响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息;
第二计算机可读存储介质上存储的程序被处理器执行时实现以下步骤:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
服务端接收请求内容后,在前置过滤器上依据所述第一映射关系将所述请求内容中各key对应的项对应赋值给服务端接收的请求内容中的请求对象的各信息;
服务端依据赋值后的请求对象进行响应,得到响应内容;
服务端将响应内容中的响应对象的各信息依据所述第二映射关系包装成由对应key组成的响应内容后发送至浏览器。
进一步的,第一计算机可读存储介质上存储的程序在实现所述修改跨域请求的请求方法为浏览器支持的请求方法的步骤时,具体实现以下步骤:
将跨域请求中为DELETE、PUT、PATCH的请求方法修改为POST的请求方法,将HEAD的请求方法修改为GET的请求方法;
若跨域请求为有修改响应头部和需要提交cookie,且请求方法为GET的请求,则将其请求方法修改为POST。
进一步的,所述请求对象包括请求地址、请求头部、请求方法、请求体和cookie信息;所述响应对象包括响应码、响应体、响应头部、响应码描述字符。
进一步的,第一计算机可读存储介质上存储的程序在实现所述当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法步骤时,具体实现以下步骤:
浏览器对xmlhttprequest接口进行重写,得到新的xmlhttprequest接口;
声明新的xmlhttprequest接口覆盖旧的xmlhttprequest接口,同时新的xmlhttprequest接口保持原有的使用方式;
当浏览器发起请求,则通过新的xmlhttprequest接口判断所述请求是否为跨域请求以及浏览器是否支持跨域资源共享,若不是跨域请求或支持跨域资源共享,则直接调用旧的xmlhttprequest接口,将请求内容发送至旧的xmlhttprequest接口;若浏览器不支持跨域资源共享且为跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法。
实施例一
请参照图2,本实施例提供一种突破跨域请求限制的方法,适用于不支持跨域资源共享策略的IE9以下的浏览器在发起跨域请求时能跨域获取数据;同时,相比现有的采用JSONP和xdomainrequest来进行跨域的远程调用相比,还具有可支持大量请求方法以及有修改响应头部和需要提交cookie的GET请求的特点,适用范围更广,效率更高。
本实施例的方法包括以下步骤:
S1:分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项。
具体的,所述请求对象包括请求地址、请求头部、请求方法、请求体和cookie等信息;所述响应对象包括响应码、响应体、响应头部、响应码描述字符等信息。建立以请求对象中各信息的英文名称为key列,信息对应的具体内容为对应项目列的第一映射关系,如以请求对象的请求地址的英文名称url为key,请求地址的具体内容为对应该key对应的项目;第二映射关系类同。
S2:当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法。
具体的,步骤S2可以包括以下子步骤:
S21:在浏览器端对xmlhttprequest接口进行重写,得到新的xmlhttprequest接口;
S22:声明新的xmlhttprequest接口覆盖旧的xmlhttprequest接口,同时新的xmlhttprequest接口保持原有的使用方式,即同样可使用;
S23:当浏览器发起请求,则通过新的xmlhttprequest接口判断所述请求是否为跨域请求,若不是跨域请求则直接调用旧的xmlhttprequest接口,将请求内容发送至旧的xmlhttprequest接口,通过该接口向服务端请求响应;
若是跨域请求则进一步判断浏览器是否支持跨域资源共享;若支持跨域资源共享,则同样直接调用旧的xmlhttprequest接口,将请求内容发送至旧的xmlhttprequest接口,通过该接口向服务端请求响应;
若为跨域请求且浏览器不支持跨域资源共享,则修改跨域请求的请求方法为浏览器支持的请求方法。
具体的,使用xdomainrequest对象将跨域请求中的http请求方法为DELETE、PUT、PATCH等请求方法修改为POST的请求方法,将HEAD的请求方法修改为GET的请求方法;
若跨域请求为有修改响应头部和需要提交cookie,且请求方法为GET的请求,则同样将其请求方法修改为POST。
S3:浏览器将跨域请求的请求对象中的各信息依据所述映射关系包装成由对应key组成的请求内容后发送至服务端;
具体的,对于请求方法修改为POST的请求,浏览器会将请求的请求对象中包括请求地址(url)、请求头部(headers)、HTTP请求方法(method)、请求体(body)、cookie等的信息分别以key value(字典对象)形式进行包装成请求内容,然后通过xdomainrequest对象将该请求内容发送至服务端;
而请求方法修改为GET的请求则直接发送至服务端。
其中,具体包装过程为:依据请求内容中请求对象的各信息的值在第一映射关系中寻找对应的key值,然后使用该key值替换请求对象中对应的信息。
浏览器将跨域请求内容以key value形式进行包装后发送至服务端,使服务端接收到数据时能通过key进行还原,从而实现浏览器能成功发送跨域请求,服务端能成功获取请求内容。
需要说明的是,只有在服务端最外层还原经修改的请求内容,才可以保证服务端响应正常的路由关系。即在前置过滤器上对服务端接收到的请求内容进行还原,而未到达业务层,能够保证业务层接收并处理还原后能够被正确处理的请求内容。
假设www.baidu.com拥有以下能力,在使用PUT方法请求www.baidu.com/api,并将认证信息a=1通过headers进行传递,则声明一个字典对象,其中url作为key,www.baidu.com/api作为项。其中headers为key,其项又是一个字典对象,该字典对象有key为a,项为1,请求方法为method为PUT。body的key为null进行传递。
S4:服务端的最外层接收到请求内容后进行存储,同时将其发送至前置过滤器进行拆包;在前置过滤器上依据第一映射关系将拆包后得到的请求内容中各key所对应的项的内容对应赋值给服务端最外层接收到的请求内容中的请求对象的各信息中,使服务端最外层接收到的请求内容中的请求对象的各信息还原为真实的跨域请求的内容。
S5:服务端依据赋值后的请求对象进行响应,得到响应内容发送至浏览器;
S6:服务端将响应内容中的响应对象的各信息依据所述第二映射关系包装成由对应key组成的响应内容后发送至浏览器;
S7:浏览器接收所述响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息。
同步骤S3的包装过程一样,需要在服务端将跨域请求的响应内容以字典对象的形式进行包装,浏览器才能正常接收,然后浏览器进行拆包还原,获取正确的响应内容。
具体的,服务端同样会将包括响应码(status)、响应体(body)、响应头部(headers)、响应码描述字符(status_text”等信息的响应对象以key value形态进行包装,然后发送给浏览器。浏览器接收响应内容后进行拆包,依据第二映射关系获取其中以响应码对应英文名称status为key所对应的项,若ststus对应的项为200-299,则调用成功回调;若ststus对应的项为400-599,则调用响应失败的回调。
由于使用xdomainrequest对象进行请求时,如果响应错误,则如访问空白页面一样,无响应内容。通过上述对响应进行包装和拆分解析的过程,能够实现客户端浏览器正确分辨响应成功或失败。
实施例二
本实施例对应实施例一,提供一种突破跨域请求限制的系统,包括浏览器和服务端,所述浏览器包括第一计算机可读存储介质,服务端包括第二计算机可读存储介质,所述第一计算机可读存储介质和第二计算接可读存储介质上存储有计算机程序。
第一计算机可读存储介质上存储的程序被处理器执行时实现以下步骤:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;所述请求对象包括请求地址、请求头部、请求方法、请求体和cookie信息;所述响应对象包括响应码、响应体、响应头部、响应码描述字符;
当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法;
浏览器将跨域请求的请求对象中的各信息依据所述第一映射关系包装成由对应key组成的请求内容后发送至服务端;
浏览器接收响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息;
第二计算机可读存储介质上存储的程序被处理器执行时实现以下步骤:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
服务端接收请求内容后,在前置过滤器上依据所述第一映射关系将所述请求内容中各key对应的项对应赋值给服务端接收的请求内容中的请求对象的各信息;
服务端依据赋值后的请求对象进行响应,得到响应内容;
服务端将响应内容中的响应对象的各信息依据所述第二映射关系包装成由对应key组成的响应内容后发送至浏览器。
优选的,第一计算机可读存储介质上存储的程序在实现所述修改跨域请求的请求方法为浏览器支持的请求方法的步骤时,具体实现以下步骤:
将跨域请求中为DELETE、PUT、PATCH的请求方法修改为POST的请求方法,将HEAD的请求方法修改为GET的请求方法;
若跨域请求为有修改响应头部和需要提交cookie,且请求方法为GET的请求,则将其请求方法修改为POST。
优选的,第一计算机可读存储介质上存储的程序在实现所述当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法步骤时,具体实现以下步骤:
浏览器对xmlhttprequest接口进行重写,得到新的xmlhttprequest接口;
声明新的xmlhttprequest接口覆盖旧的xmlhttprequest接口,同时新的xmlhttprequest接口保持原有的使用方式;
当浏览器发起请求,则通过新的xmlhttprequest接口判断所述请求是否为跨域请求以及浏览器是否支持跨域资源共享,若不是跨域请求或支持跨域资源共享,则直接调用旧的xmlhttprequest接口,将请求内容发送至旧的xmlhttprequest接口;若浏览器不支持跨域资源共享且为跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法。
优选的,第二计算机可读存储介质上存储的程序在实现所述浏览器接收所述响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息步骤时,具体实现以下步骤:
浏览器接收所述响应内容后进行拆包,依据第二映射关系获取其中以响应码对应英文名称status为key所对应的项,若ststus对应的项为200-299,则调用成功回调;若ststus对应的项为400-599,则调用响应失败的回调。
优选的,执行过程中使用xdomainrequest对象修改跨域请求的请求方法和发送请求内容。
综上所述,本发明提供的一种突破跨域请求限制的方法及其系统,不仅能够使IE9以下不支持跨域资源共享的浏览器实现跨域请求;而且适用于大多数请求方法,适用于有修改响应头部和需要提交cookie,且请求方法为GET的跨域请求,具有适用范围广的特点;进一步的,基于字典对象分别建立请求对象和响应对象的映射关系,具有简单、易于操作的特点。本发明突破除了不同协议间调用外的其他跨域限制,实现跨域获取数据。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (8)
1.一种突破跨域请求限制的方法,其特征在于,包括:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法;
浏览器将跨域请求的请求对象中的各信息依据所述第一映射关系包装成由对应key组成的请求内容后发送至服务端;
服务端接收所述请求内容后,在前置过滤器上依据所述第一映射关系将所述请求内容中各key对应的项对应赋值给服务端接收的请求内容中的请求对象的各信息;
服务端依据赋值后的请求对象进行响应,得到响应内容;
服务端将响应内容中的响应对象的各信息依据所述第二映射关系包装成由对应key组成的响应内容后发送至浏览器;
浏览器接收所述响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息;
所述修改跨域请求的请求方法为浏览器支持的请求方法,具体为:
将跨域请求中为DELETE、PUT、PATCH的请求方法修改为POST的请求方法,将HEAD的请求方法修改为GET的请求方法;
若跨域请求为有修改响应头部和需要提交cookie,且请求方法为GET的请求,则将其请求方法修改为POST。
2.如权利要求1所述的一种突破跨域请求限制的方法,其特征在于,使用xdomainrequest对象修改跨域请求的请求方法和发送请求内容。
3.如权利要求1所述的一种突破跨域请求限制的方法,其特征在于,所述请求对象包括请求地址、请求头部、请求方法、请求体和cookie信息;所述响应对象包括响应码、响应体、响应头部、响应码描述字符。
4.如权利要求1所述的一种突破跨域请求限制的方法,其特征在于,所述当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法,具体为:
浏览器对xmlhttprequest接口进行重写,得到新的xmlhttprequest接口;
声明新的xmlhttprequest接口覆盖旧的xmlhttprequest接口,同时新的xmlhttprequest接口保持原有的使用方式;
当浏览器发起请求,则通过新的xmlhttprequest接口判断所述请求是否为跨域请求以及浏览器是否支持跨域资源共享,若不是跨域请求或支持跨域资源共享,则直接调用旧的xmlhttprequest接口,将请求内容发送至旧的xmlhttprequest接口;若浏览器不支持跨域资源共享且为跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法。
5.如权利要求1所述的一种突破跨域请求限制的方法,其特征在于,所述浏览器接收所述响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息,包括:
浏览器接收所述响应内容后进行拆包,依据第二映射关系获取其中以响应码对应英文名称status为key所对应的项,若ststus对应的项为200-299,则调用成功回调;若ststus对应的项为400-599,则调用响应失败的回调。
6.一种突破跨域请求限制的系统,包括浏览器和服务端,所述浏览器包括第一计算机可读存储介质,服务端包括第二计算机可读存储介质,所述第一计算机可读存储介质和第二计算接可读存储介质上存储有计算机程序,其特征在于,第一计算机可读存储介质上存储的程序被处理器执行时实现以下步骤:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法;
浏览器将跨域请求的请求对象中的各信息依据所述第一映射关系包装成由对应key组成的请求内容后发送至服务端;
浏览器接收响应内容后,依据所述第二映射关系将所述响应对象中各key对应的项对应赋值给响应对象的各信息;
第二计算机可读存储介质上存储的程序被处理器执行时实现以下步骤:
分别建立请求对象中各信息字典对象形式的第一映射关系和响应对象中各信息字典对象形式的第二映射关系,所述第一映射关系和第二映射关系以各信息的英文名称为key,以各信息的具体内容为项;
服务端接收请求内容后,在前置过滤器上依据所述第一映射关系将所述请求内容中各key对应的项对应赋值给服务端接收的请求内容中的请求对象的各信息;
服务端依据赋值后的请求对象进行响应,得到响应内容;
服务端将响应内容中的响应对象的各信息依据所述第二映射关系包装成由对应key组成的响应内容后发送至浏览器;
第一计算机可读存储介质上存储的程序在实现所述修改跨域请求的请求方法为浏览器支持的请求方法的步骤时,具体实现以下步骤:
将跨域请求中为DELETE、PUT、PATCH的请求方法修改为POST的请求方法,将HEAD的请求方法修改为GET的请求方法;
若跨域请求为有修改响应头部和需要提交cookie,且请求方法为GET的请求,则将其请求方法修改为POST。
7.如权利要求6所述的突破跨域请求限制的系统,其特征在于,所述请求对象包括请求地址、请求头部、请求方法、请求体和cookie信息;所述响应对象包括响应码、响应体、响应头部、响应码描述字符。
8.如权利要求6所述的突破跨域请求限制的系统,其特征在于,第一计算机可读存储介质上存储的程序在实现所述当不支持跨域资源共享的浏览器发起跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法步骤时,具体实现以下步骤:
浏览器对xmlhttprequest接口进行重写,得到新的xmlhttprequest接口;
声明新的xmlhttprequest接口覆盖旧的xmlhttprequest接口,同时新的xmlhttprequest接口保持原有的使用方式;
当浏览器发起请求,则通过新的xmlhttprequest接口判断所述请求是否为跨域请求以及浏览器是否支持跨域资源共享,若不是跨域请求或支持跨域资源共享,则直接调用旧的xmlhttprequest接口,将请求内容发送至旧的xmlhttprequest接口;若浏览器不支持跨域资源共享且为跨域请求,则修改跨域请求的请求方法为浏览器支持的请求方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710455883.9A CN107391568B (zh) | 2017-06-16 | 2017-06-16 | 突破跨域请求限制的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710455883.9A CN107391568B (zh) | 2017-06-16 | 2017-06-16 | 突破跨域请求限制的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391568A CN107391568A (zh) | 2017-11-24 |
CN107391568B true CN107391568B (zh) | 2020-01-21 |
Family
ID=60331926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710455883.9A Active CN107391568B (zh) | 2017-06-16 | 2017-06-16 | 突破跨域请求限制的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391568B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108833500B (zh) * | 2018-05-29 | 2021-03-30 | 创新先进技术有限公司 | 服务调用方法、服务提供方法、数据传递方法和服务器 |
CN110245050A (zh) * | 2019-06-11 | 2019-09-17 | 四川长虹电器股份有限公司 | 一种实现script error监控和上报的方法 |
CN111142873A (zh) * | 2019-12-28 | 2020-05-12 | 深圳市盟天科技有限公司 | 浏览器的访问方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101262474A (zh) * | 2008-04-22 | 2008-09-10 | 武汉理工大学 | 一种基于跨域授权中介实现角色和组映射的跨域访问控制系统 |
CN104506405A (zh) * | 2014-12-23 | 2015-04-08 | 浙江宇视科技有限公司 | 跨域访问的方法及装置 |
CN105827663A (zh) * | 2016-06-02 | 2016-08-03 | 中国联合网络通信集团有限公司 | 访问控制方法和系统 |
CN105871976A (zh) * | 2015-11-24 | 2016-08-17 | 乐视体育文化产业发展(北京)有限公司 | 数据跨域请求方法、设备及系统 |
CN106341428A (zh) * | 2016-11-21 | 2017-01-18 | 航天信息股份有限公司 | 一种跨域访问控制方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9503501B2 (en) * | 2012-09-17 | 2016-11-22 | Salesforce.Com, Inc. | Cross domain in-browser proxy |
-
2017
- 2017-06-16 CN CN201710455883.9A patent/CN107391568B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101262474A (zh) * | 2008-04-22 | 2008-09-10 | 武汉理工大学 | 一种基于跨域授权中介实现角色和组映射的跨域访问控制系统 |
CN104506405A (zh) * | 2014-12-23 | 2015-04-08 | 浙江宇视科技有限公司 | 跨域访问的方法及装置 |
CN105871976A (zh) * | 2015-11-24 | 2016-08-17 | 乐视体育文化产业发展(北京)有限公司 | 数据跨域请求方法、设备及系统 |
CN105827663A (zh) * | 2016-06-02 | 2016-08-03 | 中国联合网络通信集团有限公司 | 访问控制方法和系统 |
CN106341428A (zh) * | 2016-11-21 | 2017-01-18 | 航天信息股份有限公司 | 一种跨域访问控制方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107391568A (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9613076B2 (en) | Storing state in a dynamic content routing network | |
CN107391568B (zh) | 突破跨域请求限制的方法及其系统 | |
US20010047477A1 (en) | Transparent user and session management for web applications | |
EP1215597A2 (en) | Reverse proxy mechanism | |
CN102857484A (zh) | 一种实现单点登录的方法、系统及装置 | |
EP3028437B1 (en) | Messaging api over http protocol to establish context for data exchange | |
CN104426862A (zh) | 实现跨域请求登录的方法、系统及浏览器 | |
AU2005234675A1 (en) | Bulk transmission of messages using a single HTTP request | |
CN109327511B (zh) | 一种基于http协议的数据请求方法和服务器 | |
CN110232265A (zh) | 双重身份认证方法、装置及系统 | |
US20150106879A1 (en) | Data recovery method, device and system using same | |
CN104767614B (zh) | 一种信息认证方法及装置 | |
CN109831536A (zh) | 一种前端负载均衡服务降级系统及方法 | |
CN111770072B (zh) | 一种单点登录接入功能页面的方法和装置 | |
CN110417632B (zh) | 一种网络通信方法、系统及服务器 | |
CN104618388A (zh) | 快速注册登录方法及对应的重置服务器、信息服务器 | |
CN109088918B (zh) | 一种交互方法、客户端设备及服务端设备 | |
CN110233902A (zh) | 会话处理方法、装置、电子设备及机器可读存储介质 | |
CN103069741A (zh) | 凭据认证方法及单点登录服务器 | |
US20140068001A1 (en) | Intermediate proxy server, communication method, and communication system based on http multi-level proxy | |
TW201644249A (zh) | 用以執行傳輸控制協定交握之裝置及方法 | |
US20060288212A1 (en) | Transparent user and session management for web applications | |
US20040163090A1 (en) | Method, system, and article of manufacture for a command line interface | |
CN111639290B (zh) | 一种对线上渠道金融产品访问的处理方法及装置 | |
JP4305146B2 (ja) | 通信制御装置、アプリケーションサーバ、およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |