网站响应处理
【E2EE文档】

网站响应处理

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

 

响应头

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

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

 

设置响应头

设置响应头方法:

  • 响应.置响应头

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

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

 

内容类型

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

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

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

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

什么是MIME类型?

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

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

增加新的MIME类型支持

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

MIMEMAP文件格式说明:

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

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

 

网址重定向

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

  • 响应.重定向

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

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

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

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

 

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的。可以使用 [创建宽文本]函数 写出指定编码的内容到网页中,写出后会自动转换内容为当前网站的编码格式。

网页内容

. E2EE khin t^oi cm nhn dc vào thiên dàng. E2EE 開発枠。 E 2エルを使って天国に入ることを感じました。 να νιθω τη χρση E2EE στο παρδεισο. Используйте E2EE, чтобы я почувствовал, как попасть в рай.

 

写出数据

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

  • 响应.写出数据

输出图片

 

重新写出内容

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

相关方法

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

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

 

模板渲染

渲染模板

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

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

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

渲染数据的优先级

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

 

模板路径

取模板路径

  • 响应.取默认模板路径

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

  • 响应.取模板渲染路径

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

置模板路径

  • 响应.置模板渲染路径

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

模板标签

  • 响应.取模板标签

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

 

发送文件

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

  • 响应.发送文件

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

注意

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

取发送文件路径

  • 响应.取发送文件路径

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

发送速度控制

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

指定 [响应.发送文件]或者[响应.写出文本]等方法,回传给浏览器的速度,单位为 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对某网络资源的有效的请求行为,不允许则返回405Allow: GET, HEAD
Cache-Control告诉所有的缓存机制是否可以缓存及哪种类型Cache-Control: no-cache
Content-Encodingweb服务器支持的返回内容压缩编码类型。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
Serverweb服务器软件名称Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie设置Http CookieSet-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