开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7539|回复: 3
收起左侧

[教程] [文档2.x] 网站响应处理

[复制链接]
发表于 2020-5-16 13:19:17 | 显示全部楼层 |阅读模式   上海市上海市
本帖最后由 神2 于 2020-5-16 13:36 编辑

[E2EE文档2.x] 网站响应处理

[服务器响应]对象,简称[响应]。主要用于返回结果给浏览器。

响应头

跟[请求头]一样,响应也有[响应头]。以下为一个标准的网页返回响应头:

HTTP/1.1 200 OK
Server: E2EE Server 2.0
Date: Sun, 04 Aug 2019 00:02:10 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 2976
Connection: keep-alive
Content-Encoding: gzip
Etag: 7047D5BB
Pramga: no-cache
Cache-Control: no-cache

HTTP响应包含三部分:

  • 响应行
  • 响应头
  • 响应体(网页内容)

[响应头] 和 [响应体] 之间使用两个换行符”\r\n\r\n“进行分割。

响应行

网站返回的内容中,第一行为[响应行]:

HTTP/1.1 200 OK

响应行通常也包含三部分内容:

  • 协议版本

    HTTP/1.1

  • 响应状态

    200

  • 状态描述

    OK

响应头

Cache-Control: no-cache
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 2976
Content-Type: text/html; charset=UTF-8
Date: Sun, 04 Aug 2019 00:02:10 GMT
Etag: 7047D5BB
Pramga: no-cache
Server: E2EE Server 2.0

响应体

[网页内容]

响应状态

响应状态也被称作[状态码],不同的状态码有不同的意义。

  • 响应.取响应状态
  • 响应.置响应状态

常见的状态码:

  • 200: 成功
  • 404: 页面不存在
  • 302: 重定向

更多的状态码可以查看 状态码列表

设置了状态码后,服务器会自动补充状态描述文本,状态码在HTTP协议中有详细的规定,超出规定范围的状态码也能够设置但是通常不建议。

注意

当状态码设置为非200时,处理完请求后会触发状态页的渲染处理。通常设置非200的状态时,建议不要写出任何内容,可以通过设置[请求.属性表]将要渲染的数据写出,修改[状态页模板]来实现对应页面内容的渲染和输出。

状态页模板通常在[模板目录]下,以状态名称命名。例如:[模板]/404.esp

设置响应头

设置响应头方法:

  • 响应.置响应头

通过名称设置响应头的内容。当对应的响应头已经存在时,则原响应头内容会被覆盖。

响应.置响应头 (“Source-Server”, “E2EE Server 2.0”)

更多响应头可以查看 常用响应头

内容类型

在[网页请求处理]中,有详细内容类型(Content-Type)说明:

  • 响应.置文档类型按后缀

通过文件的后缀名称,设置响应体的内容类型。在默认情况下,默认设置内容类型为“Content-Type: text/html; charset=<编码>”。

响应.置文档类型按后缀 (“json”)

服务器默认已经包含大部分常见的文件类型的MIME。

什么是MIME类型?

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。

MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

增加新的MIME类型支持

在[控制中心]中 [配置] > [扩展功能] > [MIMEMAP文件] 可以指定MIME配置文件的路径。默认文件是“MIMEMAP.conf”,该文件应该在[配置目录]下。

MIMEMAP文件格式说明:

  • 行首为文件后缀
  • 行末为MIME类型
  • 文件后缀MIME类型之间使用冒号“:”分割
  • 不同的MIME定义之间通过换行符“\r\n”分割

自定义MIME示例( [配置]/MIMEMAP.conf ):

mkv:        video/webm
wmv:        video/webm

网址重定向

在网站中经常会遇到需要跳转的情况,通过响应对象能够很方便的进行页面间的跳转。

  • 响应.重定向

重定向分为“临时重定向”和“永久重定向”,通过 [是否为永久地址] 参数可以指定类型。通常我们都是使用“临时重定向”,只有当遇到“http”协议跳转到“https”,或者网址永久更换的情况下,才需要用到“永久重定向”。

重定向支持[相对路径]和[绝对路径],[绝对路径] 是指使用“http://”或者“https://”开头指定协议的网址

例如:http://e2ee.jimstone.com.cn

当您的网站做为[容器化]的[模块]使用时,要跳转到您的[模块]其它“相对路径”,请设置 [自动处理容器路径] 参数为[真]。跳转时会在网址前自动带上您当前[模块]的“模块路径”。

让浏览器强制下载

当您写出的数据需要让用户下载而不是在页面显示时,可以设置[文档类型]并且添加“Content-Disposition”响应头:

.版本 2
.支持库 e2ee

.局部变量 文件名, 文本型

文件名 = “报表数据.xls”  ' // “报表数据.xls”设置为您的文件名称或路径
响应.置文档类型按后缀 (路径_取后缀名 (文件名, 假))
响应.置响应头 (“Content-Disposition”, 创建文本 (“attachment; filename={1}”, URL编码 (路径_取名称 (文件名, 真), 请求.取配置项 (#配置项_编码))))

您可以通过 [响应.写出数据]方法 或者 [响应.发送文件]方法 等指定下载数据的内容。

通过[响应.写出数据]方法写出时,可以指定任意文件名称。

Cookie和Session

[响应]对象 可以设置用户的Cookie。Cookie的具体说明可以查看[网站请求处理]章节。

  • 响应.添加Cookie

[响应.添加Cookie] 有5个参数:

  • COOKIE表: 存储COOKIE的存取键值表(键值均为文本型)。键为cookie项名称,值为cookie值。值可以为空
  • 域名: COOKIE对应的域名。不设置则为当前域名(只支持同一个主域名以及对应的二级域名)。
  • 路径: 对应网站中的路径。不设置则设置COOKIE到默认路径下。
  • 过期时间: 过期时间文本。为“0”为删除COOKIE;为数字则为多少秒后过期;如果指定的为指定日期时间请使用转换函数转换为GMT时间格式。
  • 是否安全传输: 规定是否通过安全的 HTTPS 连接来传输 cookie。为空或者[假]则不使用。

Session

[响应]对象 可以获取和设置 Session 的ID。如果要获取和赋值Session的内容,请使用 [网站请求]对象。

  • 响应.取SessionID
  • 响应.置SessionID

网页内容

写出文本

写出文本内容到网页中:

  • 响应.写出文本
  • 响应.写出宽文本

其中 [响应.写出宽文本]方法 是针对UNICODE的。可以使用 [创建宽文本]函数 写出指定编码的内容到网页中,写出后会自动转换内容为当前网站的编码格式。

.版本 2
.支持库 e2ee

.子程序 _启动服务器_网页内容_写出文本
.局部变量 server, 网站服务器

server.订阅视图函数 (&网页内容_写出文本_视图_首页, “/”, , )
server.启动 (创建键值表 (#配置项_端口, 8080, #配置项_编码, #文本编码格式_UTF8), )
运行 (创建文本 (“explorer ''http://127.0.0.1:8080/''”, ), 假, )
server.等待结束 (假)

.子程序 网页内容_写出文本_视图_首页, 逻辑型
.参数 请求对象地址, 整数型
.参数 响应对象地址, 整数型
.局部变量 请求, 服务器请求
.局部变量 响应, 服务器响应

取回请求对象 (请求对象地址, 响应对象地址, 请求, 响应)
响应.写出文本 (“<h1>网页内容</h1>”)
响应.写出宽文本 ("\ud83d\ude19\ud83d\ude43\ud83d\ude0a\ud83d\ude0b\ud83d\ude0b\ud83d\udc12\ud83d\udc27\ud83c\udfd2\ud83d\udea3\ud83c\udffb\u26f8\ud83c\udff8\ud83c\udfd2\ud83d\ude9c\ud83c\udf9e\ud83d\udcbd\ud83d\udd79\ud83d\udda5\ud83c\udf9e\ud83d\udcbf\ud83d\udcbf\ud83d\udcfb\u262f\ud83d\udc96\ud83d\udc96\ud83d\udd4e\u262f\u264b\ufe0f\u264a\ufe0f\u2649\ufe0f\u2648\ufe0f\ud83d\uded0\u003c\u0062\u0072\u002f\u003e\u0f61\u0f72\u0f42\u0f0b\u0f56\u0f7c\u0f51\u0f0b\u0f40\u0fb1\u0f72\u0f0b\u0f66\u0f90\u0f51\u0f0b\u0f61\u0f72\u0f42\u0f0d\u0f56\u0f7c\u0f51\u0f0b\u0f61\u0f72\u0f42\u0f0b\u0f56\u0f7c\u0f51\u0f0b\u0f40\u0fb1\u0f72\u0f0b\u0f66\u0f90\u0f51\u0f0b\u0f61\u0f72\u0f42\u0f0d\u0f56\u0f7c\u0f51\u0f0b\u0f61\u0f72\u0f42\u0f0b\u0f56\u0f7c\u0f51\u0f0b\u0f40\u0fb1\u0f72\u0f0b\u0f66\u0f90\u0f51\u0f0b\u0f61\u0f72\u0f42\u0f0d\u0f56\u0f7c\u0f51\u0f0b\u0f61\u0f72\u0f42\u0f0b\u0f56\u0f7c\u0f51\u0f0b\u0f40\u0fb1\u0f72\u0f0b\u0f66\u0f90\u0f51\u0f0b\u0f61\u0f72\u0f42\u0f0d\u002e\u003c\u0062\u0072\u002f\u003e\u0045\u0032\u0045\u0045\u0020\u006b\u0068\u0069\u1ebf\u006e\u0020\u0074\u00f4\u0069\u0020\u0063\u1ea3\u006d\u0020\u006e\u0068\u1ead\u006e\u0020\u0111\u01b0\u1ee3\u0063\u0020\u0076\u00e0\u006f\u0020\u0074\u0068\u0069\u00ea\u006e\u0020\u0111\u00e0\u006e\u0067\u002e\u003c\u0062\u0072\u002f\u003e\u0e44\u0e14\u0e49\u0e23\u0e39\u0e49\u0e2a\u0e36\u0e01\u0e16\u0e36\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0020\u0045\u0032\u0045\u0045\u0020\u0e44\u0e14\u0e49\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e27\u0e23\u0e23\u0e04\u0e4c\u958b\u767a\u67a0\u3002\u003c\u0062\u0072\u002f\u003e\u0045\u0020\u0032\u30a8\u30eb\u3092\u4f7f\u3063\u3066\u5929\u56fd\u306b\u5165\u308b\u3053\u3068\u3092\u611f\u3058\u307e\u3057\u305f\u3002\u003c\u0062\u0072\u002f\u003e\u03bd\u03b1\u0020\u03bd\u03b9\u03ce\u03b8\u03c9\u0020\u03c4\u03b7\u0020\u03c7\u03c1\u03ae\u03c3\u03b7\u0020\u0045\u0032\u0045\u0045\u0020\u03c3\u03c4\u03bf\u0020\u03c0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03c3\u03bf\u002e\u003c\u0062\u0072\u002f\u003e\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0020\u0045\u0032\u0045\u0045\u002c\u0020\u0447\u0442\u043e\u0431\u044b\u0020\u044f\u0020\u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u002c\u0020\u043a\u0430\u043a\u0020\u043f\u043e\u043f\u0430\u0441\u0442\u044c\u0020\u0432\u0020\u0440\u0430\u0439\u002e")
返回 (真)

网页内容

😙🙃😊😋😋🐒🐧🏒🚣🏻⛸🏸🏒🚜🎞💽🕹🖥🎞💿💿📻☯💖💖🕎☯♋️♊️♉️♈️🛐
ཡིག་བོད་ཀྱི་སྐད་ཡིག།བོད་ཡིག་བོད་ཀྱི་སྐད་ཡིག།བོད་ཡིག་བོད་ཀྱི་སྐད་ཡིག།བོད་ཡིག་བོད་ཀྱི་སྐད་ཡིག།.
E2EE khiến tôi cảm nhận được vào thiên đàng.
ได้รู้สึกถึงการใช้ E2EE ได้เข้าสวรรค์開発枠。
E 2エルを使って天国に入ることを感じました。
να νιώθω τη χρήση E2EE στο παράδεισο.
Используйте E2EE, чтобы я почувствовал, как попасть в рай.

写出数据

写出字节集内容到网页中:

  • 响应.写出数据
.版本 2
.支持库 e2ee

.子程序 _启动服务器_网页内容_写出数据
.局部变量 server, 网站服务器

server.订阅视图函数 (&网页内容_写出数据_视图_首页, “/”, , )
server.启动 (创建键值表 (#配置项_端口, 8080, #配置项_编码, #文本编码格式_UTF8), )
运行 (创建文本 (“explorer ''http://127.0.0.1:8080/''”, ), 假, )
server.等待结束 (假)

.子程序 网页内容_写出数据_视图_首页, 逻辑型
.参数 请求对象地址, 整数型
.参数 响应对象地址, 整数型
.局部变量 请求, 服务器请求
.局部变量 响应, 服务器响应

取回请求对象 (请求对象地址, 响应对象地址, 请求, 响应)
响应.置文档类型按后缀 (“png”)
响应.写出数据 (创建二维码 (到字节集 (“http://e2ee.jimstone.com.cn”), #二维码_输出格式_PNG, 6, 1, 4, #二维码_模式_自动选择, #二维码_数据纠错等级_中, -1))
返回 (真)

输出图片

重新写出内容

您可以对通过[写出文本]或者[写出数据]后的内容,清空或者获取,以便重新组装数据。

相关方法

  • 响应.取回响应数据
  • 响应.清空响应数据

通常适用于 [后置全局函数] 中。

模板渲染

渲染模板

您可以通过指定模板渲染数据到网页中:

  • 响应.渲染
  • 响应.渲染到文本

当您调用 [渲染]方法 时,如果不指定 [模板数据]参数,将使用 [请求.属性表]做为模板数据。如果指定了[模板数据],[请求.属性表] 依然会被渲染到页面中。

渲染数据的优先级

当[模板数据]和[请求.属性表]拥有相同的[主键]数据需要被渲染时,优先渲染[模板数据]中的内容,[模板数据]不存在对应的[主键]时,才会渲染[请求.属性表]中的数据。

模板路径

取模板路径

  • 响应.取默认模板路径

取回当前[视图]在[网站.订阅视图]时,绑定的模板路径。

  • 响应.取模板渲染路径

取回当前[视图]绑定的模板路径。此路径如果调用[响应.置模板渲染路径] 重新设定了本次渲染模板路径时,将得到设定后的路径。

置模板路径

  • 响应.置模板渲染路径

重新设置本次请求过程中,将要渲染数据的模板路径。

模板标签

  • 响应.取模板标签

获取当前[视图]绑定的模板中,所包含的所有类别的[模板标签]。

发送文件

您可以在当前视图中,直接发送文件给浏览器:

  • 响应.发送文件

发送文件可以指定[相对路径]和[绝对路径],[相对路径]时是以[网页目录]为根目录。

注意

[发送文件]方法 为异步方法,只有当前请求处理完之后(完成[全局]、[视图]和[后置全局]函数),才会执行实际的文件发送过程。

取发送文件路径

  • 响应.取发送文件路径

获取本次请求过程中,调用 [响应.发送文件]方法 设置的发送文件路径。

发送速度控制

  • 响应.取发送速度
  • 响应.置发送速度

指定 [响应.发送文件]或者[响应.写出文本]等方法,回传给浏览器的速度,单位为 KB

注意

只有发送的文件或数据足够大(大于128K)时,才能限定实际发送速度。

标准反馈:AJAX和远程服务

使用场景

标准反馈适用于以下场景:

  • AJAX
  • 远程服务
  • WebService
  • JSON

写出结果

写出结果相关的方法:

  • 响应.写出结果
  • 响应.写出结果_宽文本
  • 响应.写出成功
  • 响应.写出成功_宽文本
  • 响应.写出失败
  • 响应.写出失败_宽文本

这些方法相当于使用 [存取键值表.创建消息]方法。具体使用过程中,服务器会根据请求的类型返回不同格式的数据。默认情况下以及大部分时候,都将直接输出JSON格式的文本。只有 [WebService] 类型的请求时,会返回XML格式。

写出的内容格式为[标准反馈模型],详细格式可以参考 [存取键值表] 章节。

“xxx_宽文本”方法 为UNICODE相关方法,可以通过 [创建宽文本]函数 从不同的编码转换为UNICODE文本。当执行“xxx_宽文本”方法后,对应的文本内容,将自动转换为网站设定的编码格式。

附录

状态码列表

[1xx] 临时响应

100     (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,等待其余部分。
101     (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

[2xx] 请求成功

200     成功处理了请求,一般情况下都是返回此状态码;
201     请求成功并且服务器创建了新的资源。
202     接受请求但没创建资源;
203     返回另一资源的请求;
204     服务器成功处理了请求,但没有返回任何内容;
205     服务器成功处理了请求,但没有返回任何内容;
206     处理部分请求;

[3xx] 重定向代码

300   (多种选择)  针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301   (永久移动)  请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
302   (临时移动)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303   (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304   (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305   (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307   (临时重定向)  服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

[4xx] 请求出错

400    服务器不理解请求的语法。
401    请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403    服务器拒绝请求。
404    服务器找不到请求的网页。
405    禁用请求中指定的方法。
406    无法使用请求的内容特性响应请求的网页。
407    此状态代码与 401类似,但指定请求者应当授权使用代理。
408    服务器等候请求时发生超时。
409    服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
410    如果请求的资源已永久删除,服务器就会返回此响应。
411    服务器不接受不含有效内容长度标头字段的请求。
412    服务器未满足请求者在请求中设置的其中一个前提条件。
413    服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414    请求的 URI(通常为网址)过长,服务器无法处理。
415    请求的格式不受请求页面的支持。
416    如果页面无法提供请求的范围,则服务器会返回此状态代码。
417    服务器未满足”期望”请求标头字段的要求。

[5xx] 服务器内部错误

500   (服务器内部错误)  服务器遇到错误,无法完成请求。
501   (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502   (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
503   (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。
504   (网关超时)  服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505   (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

常用响应头

响应头 解释 示例
Accept-Ranges 表明服务器是否支持指定范围请求及哪种类型的分段请求 Accept-Ranges: bytes
Age 从原始服务器到代理缓存形成的估算时间(以秒计,非负) Age: 12
Allow 对某网络资源的有效的请求行为,不允许则返回405 Allow: GET, HEAD
Cache-Control 告诉所有的缓存机制是否可以缓存及哪种类型 Cache-Control: no-cache
Content-Encoding web服务器支持的返回内容压缩编码类型。 Content-Encoding: gzip
Content-Language 响应体的语言 Content-Language: en,zh
Content-Length 响应体的长度 Content-Length: 348
Content-Location 请求资源可替代的备用的另一地址 Content-Location: /index.htm
Content-MD5 返回资源的MD5校验值 Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range 在整个返回体中本部分的字节位置 Content-Range: bytes 21010-47021/47022
Content-Type 返回内容的MIME类型 Content-Type: text/html; charset=utf-8
Date 原始服务器消息发出的时间 Date: Tue, 15 Nov 2010 08:12:31 GMT
ETag 请求变量的实体标签的当前值 ETag: “737060cd8c284d8af7ad3082f209582d”
Expires 响应过期的日期和时间 Expires: Thu, 01 Dec 2010 16:00:00 GMT
Last-Modified 请求资源的最后修改时间 Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
Location 用来重定向接收方到非请求URL的位置来完成请求或标识新的资源 Location: http://www.jimstone.com.cn/
Pragma 包括实现特定的指令,它可应用到响应链上的任何接收方 Pragma: no-cache
Proxy-Authenticate 它指出认证方案和可应用到代理的该URL上的参数 Proxy-Authenticate: Basic
refresh 应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持) Refresh: 5; url=http://www.jimstone.com.cn/
Retry-After 如果实体暂时不可取,通知客户端在指定时间之后再次尝试 Retry-After: 120
Server web服务器软件名称 Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie 设置Http Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Trailer 指出头域在分块传输编码的尾部存在 Trailer: Max-Forwards
Transfer-Encoding 文件传输编码 Transfer-Encoding:chunked
Vary 告诉下游代理是使用缓存响应还是从原始服务器请求 Vary: *
Via 告知代理客户端响应是通过哪里发送的 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning 警告实体可能存在的问题 Warning: 199 Miscellaneous warning
WWW-Authenticate 表明客户端请求实体应该使用的授权方案 WWW-Authenticate: Basic
发表于 2020-5-22 10:39:24 | 显示全部楼层   河南省郑州市
热烈祝贺E2EE建版
回复 支持 反对

使用道具 举报

发表于 2020-5-16 17:45:06 | 显示全部楼层   山东省聊城市
一直在用e2ee开发web项目,很给力!
回复 支持 反对

使用道具 举报

结帖率:86% (6/7)

签到天数: 5 天

发表于 2020-5-16 13:40:53 | 显示全部楼层   河北省唐山市
打破零回复.................
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表