一种基于代理服务器实现iframe系统数据交换的方法和系统与流程

    专利2022-07-07  119


    本发明涉及计算机技术领域,具体涉及一种基于代理服务器实现iframe系统数据交换的方法和系统。



    背景技术:

    iframe是一种html标签,作为html文档中的文档,广泛存在于网页中。目前实现系统界面集成的方式大都是通过采用iframe来集成不同系统的页面,一个网页的iframe可以具有多个iframe系统或页面,但是各个iframe系统或页面在不同的域之间无法直接进行数据通讯。鉴于安全考虑,以及javascript同源策略的限制,浏览器在通过iframe跨系统调用时,不允许跨域调用其他iframe页面,无法完成跨域各个iframe页面之间数据交互。

    现有解决跨域交互的方法存在多种:document.domain iframe的设置仅限于主域名相同,而子域名不同的网页实现通信;html5postmessage可以安全的启用跨域通信,但也是仅限于相同的ip地址对应着两个域的通信;通过剪切板方法进行请求参数传递存在重大安全隐患一般仅限应用于一些非敏感数据的非生产系统中。



    技术实现要素:

    针对现有技术中存在的上述技术问题,本发明提供种一种基于代理服务器实现iframe系统数据交换的方法和系统,以实现不同iframe系统的跨域交互。

    本发明公开了一种基于代理服务器实现iframe系统数据交换的方法,所述iframe系统包括第一系统和第二系统,所述数据交换方法包括:通过浏览器打开所述第一系统,通过所述第一系统打开所述第二系统;通过所述第二系统向代理服务器发送http请求,所述http请求包括交换数据;通过所述代理服务器将所述http请求转发给应用服务器;通过所述应用服务器响应所述http请求,并将所述交换数据返回给所述浏览器;通过所述浏览器将交换数据传递给第一系统。

    优选的,本发明的方法还包括通过公共密钥进行数据交换的方法:获取公共密钥;使用公共密钥对交换数据进行加密后,发送http请求;所述应用服务器使用公共密钥进行解密后,响应所述http请求;所述应用服务器将交换数据使用公共密钥加密后,发送给所述浏览器;所述浏览器使用公共密钥进行解密并解析后,将所述交换数据传递给所述第一系统。

    优选的,获取公共密钥的方法包括:第二系统调用后端服务;所述后端服务获取公共密钥;将所述公共密钥传递给第二系统。

    优选的,本发明的方法还包括通过数据库存储配置参数的方法:所述配置参数包括第一系统的地址、第二系统的地址、代理服务器的地址和应用服务器的地址,所述第一系统基于所述第二系统的地址打开或调用所述第二系统;所述第二系统基于所述代理服务器的地址发送http请求;所述代理服务器基所述于应用服务器的地址转发http请求;所述应用服务器基于所述第一系统的地址将交换数据返回给所述第一系统。

    优选的,所述数据库还包括代理服务器的配置文件路径,基于所述配置文件路径,更新配置文件的参数。

    优选的,重启代理服务器和应用服务器时,从所述数据库中同步配置参数。

    优选的,本发明的方法还包括根据第一系统和第二系统的域名,进行数据交换的方法:分别获取所述第一系统和第二系统的域名;判断所述第一系统和第二系统的域名是否相同;若不同,通过所述第二系统向所述代理服务器发送http请求。

    本发明还提供一种用于实现上述方法的系统,包括调用模块、请求发送模块、请求转发模块、数据返回模块和数据传递模块;

    所述调用模块用于通过浏览器打开所述第一系统,通过第一系统并打开第二系统的页面;

    所述请求发送模块用于通过所述第二系统向代理服务器发送http请求,所述http请求包括交换数据;

    所述请求转发模块用于通过所述代理服务器将所述http请求转发给应用服务器;

    所述数据返回模块用于通过所述应用服务器响应所述http请求,并将所述交换数据返回给所述浏览器;

    所述数据传递模块用于通过所述浏览器将交换数据传递给第一系统。

    优选的,本发明的系统还包括后端服务模块,所述后端服务模块用于获取公共密钥,并将公共密钥发送给第二系统。

    优选的,所述后端服务模块还用于分别获取第一系统和第二系统的域名;用于判断第一系统和第二系统的域名是否相同;若不同,通过所述第二系统向代理服务器发送http请求。

    与现有技术相比,本发明的有益效果为:所述第一系统打开第二系统,第二系统根据接收到的参数,生成交换数据,根据交换数据生成http请求,通过代理服务器将http请求发送给应用服务器,应用服务器根据http请求,将交换数据返回给浏览器,通过所述浏览器将交换数据传递给第一系统,从而实现第一系统和第二系统之间的交互或数据交换,从而实现不同iframe系统之间的跨域交互。

    附图说明

    图1是本发明的基于代理服务器实现iframe系统数据交换的方法流程图;

    图2是通过公共密钥进行数据交换的方法流程图;

    图3是获取公共密钥的方法流程图;

    图4是根据第一系统和第二系统的域名,进行数据交换的方法流程图;

    图5是本发明的系统逻辑框图。

    具体实施方式

    为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

    下面结合附图对本发明做进一步的详细描述:

    一种基于代理服务器实现iframe系统数据交换的方法,如图1所示,所述iframe系统包括第一系统和第二系统,所述数据交换方法包括:

    步骤101:通过浏览器打开所述第一系统,通过所述第一系统打开所述第二系统。可以在第一系统的src属性中设置第二系统的地址,从而打开或调用第二系统及其页面。

    步骤102:通过所述第二系统向代理服务器发送http请求,所述http请求包括交换数据。其中,所述代理服务器可以是nginx服务器,可以是反向代理。

    步骤103:通过所述代理服务器将所述http请求转发给应用服务器。

    步骤104:通过所述应用服务器响应所述http请求,并将所述交换数据返回给所述浏览器。

    步骤105:通过所述浏览器将交换数据传递给第一系统。

    所述第一系统打开第二系统,第二系统根据接收到的参数,生成交换数据,根据交换数据生成http请求,通过代理服务器将http请求发送给应用服务器,应用服务器根据http请求,将交换数据返回给浏览器,通过所述浏览器将交换数据传递给第一系统,从而实现第一系统和第二系统之间的数据交互或数据交换,从而实现不同iframe系统之间的跨域交互。

    实施例1

    为提高不同iframe系统之间数据交换的安全性,如图2所示,还可以通过公共密钥进行数据交换:

    步骤201:获取公共密钥。公共密钥是指明文与加密密钥一起采取不可逆数学运算进行组合变化,形成密文的一组秘钥。

    步骤202:使用公共密钥对交换数据进行加密后,发送http请求。

    步骤203:所述应用服务器使用公共密钥进行解密后,响应所述http请求。

    步骤204:所述应用服务器将交换数据使用公共密钥加密后,发送给浏览器。

    步骤205:所述浏览器使用公共密钥进行解密并解析后,将交换数据传递给所述第一系统。

    通过公共密钥进行数据交换和转发,以提高数据交换的安全性,但不限于此,也可以通过私有密钥进行数据交换。其中,所述浏览器和应用服务器设有相同的公共密钥。

    如图3所示,步骤201中,获取公共密钥的方法包括:

    步骤301:所述第二系统调用后端服务。

    步骤302:所述后端服务获取公共密钥。

    步骤303:将所述公共密钥传递给所述第二系统。

    实施例2

    本实施例提供通过数据库存储配置参数的方法:

    所述配置参数包括第一系统的地址、第二系统的地址、代理服务器的地址和应用服务器的地址,

    所述第一系统基于所述第二系统的地址打开或调用第二系统;

    所述第二系统基于所述代理服务器的地址发送http请求;

    所述代理服务器基于所述应用服务器的地址转发http请求;

    所述应用服务器基于所述第一系统的地址将交换数据返回给所述第一系统。

    通过数据库统一存储各个存储配置参数,便于管理和分配。

    在一个具体实施例中,在所述数据库中设置代理服务器的配置文件路径,如在修改配置参数后,可以基于配置文件路径将配置参数同步到配置文件中。

    在另一个具体实施例中,在重启代理服务器和应用服务器时,从所述数据库中同步配置参数。通过数据库修改配置参数,重启所述代理服务器时从所述数据库中同步并更新配置参数,便于维护,避免反复修改程序代码。在容灾演练时、应用服务器切换时导致的ip地址、端口号调整或者公共密钥定期轮询变动时无需修改代码,只需修改数据库配置,重启应用服务器即可实现。

    公共密钥也可以保存在所述数据库中,第二系统从数据库中获取公共密钥。

    实施例3

    如图4所示,本实施例提供根据第一系统和第二系统的域名,进行数据交换的方法:

    步骤401:分别获取所述第一系统和第二系统的域名。

    步骤402:判断所述第一系统和第二系统的域名是否相同。

    若不同,执行步骤102:通过所述第二系统向所述代理服务器发送http请求。通过代理服务器、应用服务器和浏览器与所述第一系统交互。

    判断所述第一系统和第二系统的域名相同时,通常允许第一系统和第二系统可以直接进行数据交换。

    实施例4

    在数据库中配置第一系统地址:http://192.168.1.1:8082;第二系统地址:http://127.0.0.1:8080;ngnix配置文件路径。

    重启代理服务器和应用服务器,第一系统地址和应用服务器地址自动写入ngnix配置文件中。

    通过浏览器登陆第一系统的页面,第一系统调用第二系统,并打开第二系统的页面,第二系统根据第一系统的调用请求,生成交换数据。从而实现不同iframe系统的页面嵌套。

    获取第一系统和第二系统的域名和端口号,判断第一系统和第二系统为跨域调用。

    调用后端服务从数据库中获取公共密钥,并保存在内容的session对象中。

    第二系统根据session对象中的公共密钥,对交换数据进行加密后,向代理服务器发送http请求。

    代理服务器转发请求到应用服务器,应用服务器使用公共密钥对http请求进行解密并解析,并将交换数据加密后返回浏览器,所述浏览器解密并解析后通过响应参数将交换数据回填到第一系统的页面中,从而实现跨域的数据交换。

    其中,代理服务器和应用服务器可以部署在同一台主机上或同一局域网中。

    在一个具体应用中,老系统的升级改造通常需要花费大量的时间,通过本发明的方法,在老系统的页面中嵌套新系统,通过老系统访问新系统,新系统将交换数据交换给旧系统,以确保老系统升级过程中,仍然可以正常使用,提高用户的使用体验。

    本发明还提供一种用于实现上述方法的系统,如图5所示,包括调用模块1、请求发送模块2、请求转发模块3、数据返回模块4和数据传递模块5;

    调用模块1用于通过浏览器打开所述第一系统,通过第一系统并打开第二系统的页面;

    请求发送模块2用于通过所述第二系统向代理服务器发送http请求,所述http请求包括交换数据;

    请求转发模块3用于通过所述代理服务器将所述http请求转发给应用服务器;

    数据返回模块4用于通过所述应用服务器响应所述http请求,并将所述交换数据返回给所述浏览器;

    数据传递模块5用于通过所述浏览器将交换数据传递给第一系统。

    本发明的系统还可以包括后端服务模块6用于获取公共密钥,并将公共密钥发送给第二系统。

    其中,后端服务模块6还用于分别获取所述第一系统和第二系统的域名;用于判断所述第一系统和第二系统的域名是否相同;若不同,通过所述第二系统向代理服务器发送http请求。

    以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


    技术特征:

    1.一种基于代理服务器实现iframe系统数据交换的方法,其特征在于,所述iframe系统包括第一系统和第二系统,所述数据交换方法包括:

    通过浏览器打开所述第一系统,通过所述第一系统打开所述第二系统;

    通过所述第二系统向代理服务器发送http请求,所述http请求包括交换数据;

    通过所述代理服务器将所述http请求转发给应用服务器;

    通过所述应用服务器响应所述http请求,并将所述交换数据返回给所述浏览器;

    通过所述浏览器将交换数据传递给第一系统。

    2.根据权利要求1所述的实现iframe系统数据交换的方法,其特征在于,还包括通过公共密钥进行数据交换的方法:

    获取公共密钥;

    使用公共密钥对交换数据进行加密后,发送http请求;

    所述应用服务器使用公共密钥进行解密后,响应所述http请求;

    所述应用服务器将交换数据使用公共密钥加密后,发送给所述浏览器;

    所述浏览器使用公共密钥进行解密并解析后,将所述交换数据传递给所述第一系统。

    3.根据权利要求2所述的实现iframe系统数据交换的方法,其特征在于,获取公共密钥的方法包括:

    第二系统调用后端服务;

    所述后端服务获取公共密钥;

    将所述公共密钥传递给第二系统。

    4.根据权利要求3所述的实现iframe系统数据交换的方法,其特征在于,还包括通过数据库存储配置参数的方法:

    所述配置参数包括第一系统的地址、第二系统的地址、代理服务器的地址和应用服务器的地址,

    所述第一系统基于所述第二系统的地址打开或调用所述第二系统;

    所述第二系统基于所述代理服务器的地址发送http请求;

    所述代理服务器基所述于应用服务器的地址转发http请求;

    所述应用服务器基于所述第一系统的地址将交换数据返回给所述第一系统。

    5.根据权利要求4所述的实现iframe系统数据交换的方法,其特征在于,所述数据库还包括代理服务器的配置文件路径,

    基于所述配置文件路径,更新配置文件的参数。

    6.根据权利要求4或5所述的实现iframe系统数据交换的方法,其特征在于,重启代理服务器和应用服务器时,从所述数据库中同步配置参数。

    7.根据权利要求1所述的实现iframe系统数据交换的方法,其特征在于,还包括根据第一系统和第二系统的域名,进行数据交换的方法:

    分别获取所述第一系统和第二系统的域名;

    判断所述第一系统和第二系统的域名是否相同;

    若不同,通过所述第二系统向所述代理服务器发送http请求。

    8.一种用于实现权利要求1-7任一项所述方法的系统,其特征在于,包括调用模块、请求发送模块、请求转发模块、数据返回模块和数据传递模块;

    所述调用模块用于通过浏览器打开所述第一系统,通过第一系统并打开第二系统的页面;

    所述请求发送模块用于通过所述第二系统向代理服务器发送http请求,所述http请求包括交换数据;

    所述请求转发模块用于通过所述代理服务器将所述http请求转发给应用服务器;

    所述数据返回模块用于通过所述应用服务器响应所述http请求,并将所述交换数据返回给所述浏览器;

    所述数据传递模块用于通过所述浏览器将交换数据传递给第一系统。

    9.根据权利要求8所述的系统,其特征在于,还包括后端服务模块,所述后端服务模块用于获取公共密钥,并将公共密钥发送给第二系统。

    10.根据权利要求9所述的系统,其特征在于,所述后端服务模块还用于分别获取第一系统和第二系统的域名;用于判断第一系统和第二系统的域名是否相同;若不同,通过所述第二系统向代理服务器发送http请求。

    技术总结
    本发明公开了一种基于代理服务器实现iframe系统数据交换的方法和系统,所述数据交换方法包括:通过浏览器打开第一系统,通过第一系统打开第二系统;通过第二系统向代理服务器发送HTTP请求;通过代理服务器将HTTP请求转发给应用服务器;通过应用服务器响应HTTP请求,并将交换数据返回给浏览器;通过浏览器将交换数据传递给第一系统。第一系统打开第二系统,第二系统根据接收到的参数,生成交换数据,根据交换数据生成HTTP请求,通过代理服务器将HTTP请求发送给应用服务器,应用服务器根据HTTP请求,将交换数据返回给浏览器,通过所述浏览器将交换数据传递给第一系统,从而实现第一系统和第二系统之间的数据交互。

    技术研发人员:王伟
    受保护的技术使用者:北京思特奇信息技术股份有限公司
    技术研发日:2020.10.23
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-7614.html

    最新回复(0)