书签 分享 收藏 举报 版权申诉 / 14

一种用于实现跨域交互访问的方法和系统.pdf

  • 上传人:111****112
  • 文档编号:4724600
  • 上传时间:2018-10-31
  • 格式:PDF
  • 页数:14
  • 大小:2.26MB
  • 摘要
    申请专利号:

    CN201210590153.7

    申请日:

    2012.12.31

    公开号:

    CN103023790A

    公开日:

    2013.04.03

    当前法律状态:

    驳回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的驳回IPC(主分类):H04L 12/749申请公布日:20130403|||实质审查的生效IPC(主分类):H04L 12/749申请日:20121231|||公开

    IPC分类号:

    H04L12/749(2013.01)I; H04L29/06

    主分类号:

    H04L12/749

    申请人:

    北京京东世纪贸易有限公司

    发明人:

    尹彦明

    地址:

    100176 北京市北京经济技术开发区科创十四街99号2号楼B168室

    优先权:

    专利代理机构:

    中原信达知识产权代理有限责任公司 11219

    代理人:

    刘光明;穆德骏

    PDF完整版下载: PDF下载
    内容摘要

    本发明提供一种用于实现跨域交互访问的方法和系统。所述方法包括:由第一服务器的第一web应用中的JavaScript向Java接口发出对获取第二服务器中的内容的请求,所述第一服务器属于第一域,所述第二服务器属于与第一域不同的第二域;所述Java接口基于所述请求从所述第二服务器获取所述第二web应用中的内容;由所述第一web应用中的JavaScript动态地创建具有跨域能力的标签并且将所述标签的内容设置为所获取的所述第二web应用中的内容;以及由所述第一web应用通过其JavaScript与所创建的标签中的JavaScript进行交互。

    权利要求书

    权利要求书一种用于实现跨域交互访问的方法,所述方法包括:由第一服务器的第一web应用中的JavaScript向Java接口发出对获取第二服务器中的内容的请求,所述第一服务器属于第一域,所述第二服务器属于与第一域不同的第二域;所述Java接口基于所述请求从所述第二服务器获取所述第二web应用中的内容;由所述第一web应用中的JavaScript动态地创建具有跨域能力的标签并且将所述标签的内容设置为所获取的所述第二web应用中的内容;以及由所述第一web应用通过其JavaScript与所创建的标签中的JavaScript进行交互。根据权利要求1所述的方法,其中,从所述第二服务器获取所述第二web应用中的内容包括:通过将所述内容封装成JavaScript格式的文件来从所述第二服务器获取所述第二web应用中的内容。根据权利要求1或2所述的方法,其中,从第二服务器获取第二web应用中的内容进一步包括:对所述内容的路径进行转换处理。根据权利要求3所述的方法,进一步包括:将所获取的内容保存在所述第一服务器中。根据权利要求1或2所述的方法,其中,所述标签是iframe。根据权利要求1或2所述的方法,其中,所述标签是script。根据权利要求1所述的方法,其中,所述请求通过JSON或JSONP来实现。一种用于实现跨域交互访问的系统,所述系统包括:第一服务器,所述第一服务器包括第一web应用,所述第一服务器属于第一域,所述第一服务器被配置成由所述第一服务器的第一web应用中的JavaScript向Java接口发出对获取第二服务器中的内容的请求;Java接口,所述Java接口被配置成基于所述请求从第二服务器获取第二web应用中的内容;第二服务器,所述第二服务器包括第二web应用,所述第二服务器属于与所述第一域不同的第二域;其中所述第一web应用被配置成由所述第一web应用中的JavaScript动态地创建具有跨域能力的标签并且将所述标签的内容设置为所获取的所述第二web应用中的内容;以及由所述第一web应用通过其JavaScript与所创建的标签中的JavaScript进行交互。根据权利要求8所述的系统,其中,所述Java接口进一步被配置成:通过将所述内容封装成JavaScript格式的文件来从所述第二服务器获取所述第二web应用中的内容。根据权利要求8或9所述的系统,其中,所述Java接口进一步被配置成:对所述内容的路径进行转换处理。根据权利要求10所述的系统,所述Java接口进一步被配置成:将所获取的内容保存在所述第一服务器中。根据权利要求8或9所述的系统,其中,所述标签是iframe。根据权利要求8或9所述的系统,其中,所述标签是script。根据权利要求8所述的系统,其中,所述请求通过JSON或JSONP来实现。

    说明书

    说明书一种用于实现跨域交互访问的方法和系统
    技术领域
    本发明涉及跨域交互访问,更具体地,涉及一种通过动态创建具有跨域能力的标签来实现跨域交互访问的方法。
    背景技术
    随着网络技术的发展,Web应用对跨域访问的需求也越来越多。域(Domain)是Windows网络中独立运行的单位,域之间相互访问需要建立信任关系。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,两个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。
    然而,由于浏览器的安全限制,同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。同源策略是为了防止从一个地址加载的文档或脚本访问或者设置从另外一个地址加载的文档的属性。也就是说,受到请求的URL的域必须与当前Web页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。图1示意性地示出了跨域访问的概念图。如图1中所示,如果aa.com需要对同一域名aa.bb.com下的资源进行请求,则这种请求是允许的。然而,如果aa.com需要对不同域名bb.com下的资源进行请求,那么就构成了跨域请求(也就是说,对脚本所在的服务器之外的服务器进行了访问),浏览器会拒绝对bb.com的资源的请求。
    受到同源策略的影响,跨域资源共享就会受到制约,但是跨域访问资源是有利的。例如,可以将请求分摊到不同的服务器,减轻单个服务器压力以提高响应速度;以及可以将不同的业务逻辑分布到不同的服务器上以降低负载。现有技术中通常使用代理、document.domain方案或使用HTML5中的WebSocket方案来实现跨域交互访问。
    使用代理来实现跨域交互访问的原理是在服务器上配置一个代理,从而不用服务器直接请求需要的web服务,而是通过代理去请求web服务,然后再将结果返回到服务器。图2示意性地图示了现有技术中利用代理来实现跨域访问的视图。如图2所示,首先由客户端向代理发起请求,代理在接收到请求之后向web服务器发起请求。接着,web服务接收、处理该请求,并将结果返回代理。最后,代理将结果返回客户端。根据情况,可以在客户端和web服务器两端均配置代理。例如,在公开号为CN101615179A、题为“用于web应用的跨域交互的方法和系统”的专利申请中,在客户端和web服务器两端均配置代理的情况下,通过使用一个隐藏的iframe通过表单提交的方式来回刷新页面来进行交互,该方案强调数据的传递和处理并且只解决了跨域的web数据交互问题。使用代理的这种方法虽然使用广泛,但是不够灵活而且会受到服务器性能的限制。
    另外,document.domain方案通过修改文档的域(domain)属性,使得可以在域和子域或者不同的子域之间通信。同域策略认为域和子域隶属于不同的域,比如www.a.com和sub.a.com是不同的域,这时,我们无法在www.a.com下的页面中调用sub.a.com中定义的JavaScript(JS)方法。但是当我们把它们document的domain属性都修改为a.com,浏览器就会认为它们处于同一个域下,那么我们就可以互相调用对方的方法来通信了。使用JS设置需要交互的两个网页的document.domain相同。实现相互之间的JS脚本访问。这种方案的缺陷是只能应用于同一个域下的二级域名之间的应用,也就是主域相同而二级域名不同的情况下,而不能使用在完全不同的两个域下。另外,当一个站点被攻击后,另一个站点会引起安全漏洞。
    此外,还可以使用HTML5中的WebSocket。这种方案的缺陷是只能在少数支持HTML5的浏览器中应用,并且不支持IE6/IE7/IE8这样的主流浏览器。
    因此,为了使web应用能够动态访问其他域的数据和服务,需要一种能够更安全、方便地实现跨域交互访问的方法和系统。
    发明内容
    实现JS跨域访问需要解决以下问题:如何动态地获取跨域服务器中的数据;如何创建标签和设置标签的内容,以便保证良好的浏览器兼容性;以及如何保证标签的内容中引用外部文件的地址有效。
    本发明的目的是突破,浏览器对JS(JavaScript)在不同域(域名(Domain Name),是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称)之间访问的安全限制,提供一种无缝的在不同域场景中(例如,a.com域中的A页面使用iframe嵌入了b.com域中的B页面,A页面要访问B页面中的JS的变量或方法等)实现JS无缝交互访问的解决方案。本方案使用动态渲染诸如iframe的标签的思想,越过浏览器的跨域限制,实现跨域JS的无缝访问。从实现角度来讲本发明包括三个核心部分。
    第一,采用JS动态创建具有跨域能力的标签(诸如iframe)而不是传统的html标记中的iframe,这样做的好处是标签中的内容可以通过JS来控制,不需要通过传统的src属性来获取,浏览器会认为动态创建的这个标签与其所在的网页是同一个域下的,不存在跨域访问的问题。
    第二,采用java接口抓取跨域web应用中的内容,并将内容中的相对路径转换成绝对路径。相对路径指的是主页上的文件或目录相对于某个基准目录的路径,相对路径是由这个文件所在的路径引起的与其它文件或文件夹的路径关系;而绝对路径指的是主页上的文件或目录在硬盘上真正的路径,绝对路径可以完整地描述文件位置。
    第三,JS采用JSON的方式去调用java接口,因为java接口与JS是部署在不同域下。优选地,可以通过JSONP(JSON with Padding,具有填充符的JSON)实现跨越通讯,以便获取java接口返回的数据。JSONP是资料格式JSON的一种“使用模式”,通过这种模式可以实现数据的跨域获取。
    根据本发明的一个实施例,提供了一种用于实现跨域交互访问的方法,所述方法包括:由第一服务器的第一web应用中的JavaScript向Java接口发出对获取第二服务器中的内容的请求,所述第一服务器属于第一域,所述第二服务器属于与第一域不同的第二域;所述Java接口基于所述请求从所述第二服务器获取所述第二web应用中的内容;由所述第一web应用中的JavaScript动态地创建具有跨域能力的标签并且将所述标签的内容设置为所获取的所述第二web应用中的内容;以及由所述第一web应用通过其JavaScript与所创建的标签中的JavaScript进行交互。
    优选地,从所述第二服务器获取所述第二web应用中的内容包括:通过将所述内容封装成JavaScript格式的文件来从所述第二服务器获取所述第二web应用中的内容。
    优选地,从第二服务器获取第二web应用中的内容进一步包括:对所述内容的路径进行转换处理。
    优选地,将所获取的内容保存在所述第一服务器中。
    优选地,所述标签是iframe。
    优选地,所述标签是script。
    优选地,所述请求通过JSON或JSONP来实现。
    根据本发明的另一个实施例,提供了一种用于实现跨域交互访问的系统,所述系统包括:第一服务器,所述第一服务器包括第一web应用,所述第一服务器属于第一域,所述第一服务器被配置成由所述第一服务器的第一web应用中的JavaScript向Java接口发出对获取所述第二服务器中的内容的请求;Java接口,所述Java接口被配置成基于所述请求从第二服务器获取第二web应用中的内容;第二服务器,所述第二服务器包括第二web应用,所述第二服务器属于与所述第一域不同的第二域,其中所述第一web应用被配置成由所述第一web应用中的JavaScript动态地创建具有跨域能力的标签并且将所述标签的内容设置为所获取的所述第二web应用中的内容;以及由所述第一web应用通过其JavaScript与所创建的标签中的JavaScript进行交互。
    所述Java接口进一步被配置成:通过将所述内容封装成JavaScript格式的文件来从所述第二服务器获取所述第二web应用中的内容。
    所述Java接口进一步被配置成:对所述内容的路径进行转换处理。
    所述Java接口进一步被配置成:将所获取的内容保存在所述第一服务器中。
    附图说明
    附图图示了本发明的实施例,并与说明书一起用于解释本发明的原理。在附图中:
    图1示意性地图示了跨域访问的概念图。
    图2示意性地图示了现有技术中利用代理来实现跨域访问的视图。
    图3示意性地图示了根据本发明的一个实施例的实现跨域访问的系统及其工作流程的视图。
    图4示意性地图示了根据本发明的另一个实施例的实现跨域访问的系统及其工作流程的视图。
    图5示意性地图示了根据本发明的实施例的实现跨域访问的方法的流程图。
    具体实施方式
    本发明基于动态创建具有跨域能力的标签和动态渲染内容的思想,实现了两个完全不同的域下的网页之间JS脚本交互的功能,达到与同域情况下相同的无缝跨域交互体验,解决了跨域JS访问的问题,从而为不同域的两个Web项目之间的合作解决了核心技术问题。
    如本领域技术人员已知的,是否跨域的判断规则为对三者进行比较:域名、协议、端口;三者中若有一个不相同,则会出现跨域问题。在本发明中,跨域通常指的是域名不同。简单来说,跨域访问指的是A网站的javascript代码试图访问处于不同域中的B网站,包括提交内容和获取内容。JavaScript是一种基于对象的脚本语言,用于开发基于客户端和基于服务器的Internet应用程序,可用于创建客户端脚本,被简称为JS。
    虽然浏览器默认禁止了跨域访问,但是并不禁止在Web页面中引用其他域的JS文件,并且可以自由执行引入的JS文件中的功能(包括操作cookie、Dom等)。也就是说,如果A网站从B网站加载Javascript,A网站可以自由地访问该Javascript的内容,并不会被浏览器认为是跨域访问。不仅如此,我们还发现凡是拥有“src”这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>。可选地,src属性不一定必须是一个存在的JS文件,也可以是一个URL,只要返回的是一个javascript类型的响应就可以。因此,为了实现跨域交互,我们可以通过在远程服务器上设法把数据装进JS格式的文件里来使客户端能够调用和进一步处理所述数据。
    例如,如本领域技术人员已知的,由于JSON(JavaScript Object Notation)的纯字符数据格式可以简洁的描述复杂数据并且JSON还被JS原生支持,所以JSON可以在客户端任意地处理这种格式的数据。因此,web客户端可以通过与调用脚本一模一样的方式来调用跨域服务器上动态生成的JS格式文件(一般以JSON为后缀)。显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的数据装入进去。
    客户端在对JSON文件调用成功之后,也就获得了自己所需的数据,剩下的就是按照自己需求进行处理和展现了。替代地,为了便于客户端使用数据,可以使用JSONP(JSON with Padding)。JSONP是一个非官方的协议,它允许在服务器端集成脚本标签(Script tags)返回至客户端,通过javascript回调函数(callback)的形式来实现跨域访问。也就是说,JSONP允许用户将一个callback参数传递给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
    因此,利用诸如<script>、<img>、<iframe>等具有跨域能力的标签,根据本发明的实施方案首先通过将跨域B页面的内容封装成JS格式的文件来获取B页面的内容,然后将所获取的跨域B页面的内容包含在本地A页面中,由此实现跨域交互访问。
    例如,根据本发明的一个实施例,首先通过利用JSONP将跨域B页面的内容封装成JS格式的文件来获取跨域B页面的内容,然后通过在本地A页面中使用JS动态地创建一个iframe元素,并且动态地将B网页的内容设置为iframe的内容,使得浏览器认为A页面与iframe在同一个域下。其中iframe中的内容与B页面的内容是一致的,从而从侧面达到了两个页面之间JS相互访问的目的。
    替代地,根据本发明的另一个实施例,也可以通过使用JS动态地创建script来实现完全跨域的交互,使得能够通过将要请求的跨域页面的内容封装成JS格式的文件来将跨域页面包含在本地页面中,从而实现跨域访问。
    下面结合说明书附图详细描述本发明的实施例的用于实现跨域访问的系统及其工作流程。
    图3示意性地图示了根据本发明的一个实施例的实现跨域访问的系统300及其工作流程的视图。如图3所示,系统300包括服务器302和服务器304,其中服务器302提供属于域A的服务和/或数据,而服务器304提供属于与域A不同的域B的服务和/或数据。例如,服务器302可以是网站a.com,而服务器304可以是网站b.com。在本发明的此实施例中,服务器302和服务器304既可以是物理上独立的两个实体,也可以是逻辑上独立的两个web服务器,两者分别提供属于不同域的服务/数据。
    如图3中所示,当用户想要访问属于域B的服务器304的web应用308中的内容时,属于域A的web应用306将被调用并运行于客户端的浏览器上。web应用是一种基于web的应用,指的是用户界面驻留在web浏览器中的任何应用程序,它是一些web网页和用来完成某些任务的其他资源的集合。web应用是客户端/服务器架构的产物,它能够通过网络使得客户端与服务器进行通信。例如,常见的聊天室、论坛等都是web应用。web应用306可以与服务器302相互通信,因为它们属于相同的域。
    然后,在步骤1,web应用306中的JS向Java接口310发出对获取属于域B的服务器304中的内容的请求。该请求可以通过例如可以在任何不同的域之间调用的JSONP来实现。JSONP是一个非官方的协议,它允许在服务器端集成脚本标签(Script tags)返回至客户端,通过javascript回调函数的形式来实现跨域访问。然而,本领域技术人员可以理解,还可以使用其他的方式来实现请求,例如,开放API等。
    接着,在步骤2,Java接口310在接收到该请求之后基于该请求从属于域B的服务器304获取其web应用308中的内容并根据情况对内容的相对路径进行转换处理。所获取的web应用308中的内容被封装成JS格式的文件。根据本发明的一个实施例,Java接口可以使用httpclient来抓取web应用308中的内容。httpclient提供了便利的HTTP协议访问,使得我们可以很容易地得到某个网页的源码并保存在本地。替代地,也可以使用其他技术来抓取web应用408中的内容,例如,htmlparser等。
    所述路径的转换例如是将web应用308中的内容的相对路径转换成绝对路径,以便能够根据绝对路径获取内容。相对路径是以引用文件之网页所在位置为参考基础而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,所以称之为相对。绝对路径是以Web站点根目录为参考基础的目录路径。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。其实绝对路径与相对路径的不同处,只在于描述目录路径时,所采用的参考点不同。由于对网站上所有文件而言,根目录这个参考点对所有文件都是一样的,因此,运用以根目录为参考点的路径描述方式才会被称之为绝对路径。
    在步骤3,在将所获取的web应用308中的内容保存在服务器302之后,web应用306中的JS动态地创建iframe并且将iframe的内容设置为所获取的web应用308中的内容。
    iframe对象也可以被称为嵌入式元素或嵌入式框架,它可以将一个网页的框架和内容嵌入在现有的HTML网页中,作为现有HTML网页的一个子窗口。iframe可以嵌入到HTML网页中的任意部分。它的一大特征是,iframe所引用的HTML文件不是与另外的HTML文件相互独立显示,而是可以直接嵌入在一个HTML文件中,但是这两个HTML文件是相互独立的,两者都被看成是完整的文件,而不是将其中一个看成另一个的一部分。另外,iframe还可以多次在不同页面内显示同一内容,而不必重写该内容。iframe的大小是可调整的。
    在步骤3中将web应用308中的内容包含在iframe中之后,由于iframe与服务器302属于相同的域A,所以在步骤4服务器302中的web应用306可以通过web应用306的JS与iframe中的JS进行交互来相互调用变量或方法等,从而实现了跨域交互访问。
    图4示意性地图示了根据本发明的另一个实施例的实现跨域访问的系统400及其工作流程的视图。如图4所示,系统400包括服务器402和服务器404,其中服务器402提供属于域A的服务和/或数据,而服务器404提供属于与域A不同的域B的服务和/或数据。例如,服务器402可以是网站a.com,而服务器404可以是网站b.com。在本发明的此实施例中,服务器402和服务器404既可以是物理上独立的两个实体,也可以是逻辑上独立的两个web服务器,两者分别提供属于不同域的服务/数据。
    如图4中所示,当用户想要访问属于域B的服务器404的web应用408中的内容时,属于域A的web应用406将被调用并运行于客户端的浏览器上。web应用406可以与服务器402相互通信,因为它们属于相同的域。
    然后,在步骤1,web应用406中的JS向Java接口410发出对获取属于域B的服务器中的内容的请求。该请求可以通过例如可以在任何不同的域之间调用的JSONP来实现。JSONP是一个非官方的协议,它允许在服务器端集成脚本标签(Script tags)返回至客户端,通过javascript回调函数的形式来实现跨域访问。然而,本领域技术人员可以理解,还可以使用其他的方式来实现请求,例如,开放API等。
    接着,在步骤2,Java接口410在接收到该请求之后基于该请求从属于域B的服务器404获取其web应用408中的内容并根据情况对内容的相对路径进行转换处理。所获取的web应用408中的内容被封装成JS格式的文件。所述路径的转换例如是将web应用408中的内容的相对路径转换成绝对路径,以便能够根据绝对路径获取内容。根据本发明的一个实施例,Java接口可以使用诸如httpclient来抓取web应用408中的内容。替代地,也可以使用其他技术来抓取web应用408中的内容,例如,htmlparser等。
    在步骤3,在将所获取的web应用408中的内容保存在服务器402之后,web应用406中的JS动态创建script并且将script的内容设置为所获取的web应用408中的内容,使得将跨域web应用408中的内容包含在本地web应用406中。
    在步骤3中将web应用408中的内容包含在本地web应用406中之后,由于script与服务器402属于同域A,所以在步骤4服务器402中的web应用406可以通过web应用406的JS与script中的JS进行交互来相互调用变量或方法等,从而实现了跨域交互访问。
    图5示意性地图示了根据本发明的实施例的实现跨域访问的方法500的流程图。如图5所示,在步骤504,属于域A服务器的web应用中的JS向Java接口发出对获取属于域B的服务器中的内容的请求。在步骤506,Java接口在接收到该请求之后基于该请求从属于域B的服务器获取其web应用中的内容并根据情况对内容的相对路径进行转换处理。在步骤508,域A中的web应用中的JS动态创建标签并且将该标签的内容设置为所获取的B域中的web应用中的内容。然后,在步骤510,域A中的web应用可以通过其JS与所创建的标签中的JS进行交互。最后,方法500结束。
    此外,在使用WebSocket技术进行通信的情况下,也可以采用本发明的思想。例如,可以在通过使用JS动态地创建WebSocket对象,通过收发WebSocket消息来实现完全跨域的交互,其中,解析消息内容仍然调用JS方法。然而,此方案只能在支持HTML5新特性的浏览器中应用,并且具有兼容性差、性能低、操作繁琐的缺点。
    本发明的方案具备足够的安全性。例如,用户使用的web应用所在的域的凭证(例如,用户名和口令)被保留在本地,而不会被传递到属于目标域(即,需要调用的服务或访问的数据所在的域)的服务器端,从而确保了本地关键数据的安全性。
    根据本发明的实施方案的跨域交互不仅可应用于主次域名的文件资源,而且可应用于非主次域名的跨域交互。本发明针对的是跨域的JS交互和调用,通过动态设置具有跨域能力的标签的内容来越过浏览器的跨域限制,从而实现与同域情况下相同的无缝JS交互体验。因此,本发明的数据获取被推到了前端JS,而绕过了服务器,从而节省了服务端资源开销。另外,由于数据直接在客户端交互,所以速度也最快。
    上述实施例仅是本发明的优选实施例,并不用于限制本发明。对本领域技术人员显而易见的是,在不脱离本发明的精神和范围的情况下,可以对本发明的实施例进行各种修改和改变。因此,本发明意在涵盖落入如权利要求所限定的本发明的范围之内的所有这样的修改或变型。

    关 键  词:
    一种 用于 实现 交互 访问 方法 系统
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种用于实现跨域交互访问的方法和系统.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4724600.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1