菜单
开源 RSS

Response

Response 对象由生成 HTTP 请求的 `http.*` 方法使用。这些方法返回一个(或多个,对于 `http.batch()` 来说)Response 对象,其中包含 HTTP 响应内容和性能计时测量结果。

请注意,在发生重定向的情况下,Response 对象中的所有信息都将与最后一个请求(即未被重定向的请求)相关联。

名称类型描述
Response.body字符串Response 消息体内容,常用于提取动态数据(参见此处示例)以及使用检查验证内容是否存在时。

关于如何在不需要消息体时丢弃它(以节省内存)或处理二进制数据消息体,请参见 Params.responseTypeoptions.discardResponseBodies
Response.cookies对象Response cookie。对象属性是 cookie 名称,值是 cookie 对象数组(包含 `name`、`value`、`domain`、`path`、`httpOnly`、`secure`、`maxAge` 和 `expires` 字段)。
Response.error字符串尝试发送请求时如果发生非 HTTP 错误,则显示错误消息。
Response.error_code数值如果发生非 HTTP 错误或 4xx/5xx HTTP 错误,则设置为描述该错误的特定错误代码。(0.24.0 版新增)
Response.headers对象表示服务器发送的所有 HTTP 头的键值对。请注意,头名称采用规范形式;例如,如果服务器响应“accept-encoding”,则键将是“Accept-Encoding”。按特定名称请求头时,由于头可以有多个值,将返回一个字符串数组。您可以通过其索引访问每个值 - 对于第一个值或单值头,将是 `Response.headers["my_key"][0]`。
Response.ocsp.produced_at数值如果服务器提供了 OCSP 装订响应,则表示自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数,代表 CA(或 CA 委托的 OCSP 响应者)签署此 OCSP 装订响应的时间
Response.ocsp.this_update数值如果服务器提供了 OCSP 装订响应,则表示自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数,代表已知指示状态正确的时间。
Response.ocsp.next_update数值如果服务器提供了 OCSP 装订响应,则表示自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数,代表 CA(或 CA 委托的 OCSP 响应者)将刷新此 OCSP 装订响应的时间。
Response.ocsp.revocation_reason字符串证书吊销原因(如果证书状态是吊销),为以下常量之一:`http.OCSP_REASON_UNSPECIFIED`、`http.OCSP_REASON_KEY_COMPROMISE`、`http.OCSP_REASON_CA_COMPROMISE`、
http.OCSP_REASON_AFFILIATION_CHANGED,
http.OCSP_REASON_SUPERSEDED,
http.OCSP_REASON_CESSATION_OF_OPERATION,
http.OCSP_REASON_CERTIFICATE_HOLD,
http.OCSP_REASON_REMOVE_FROM_CRL,
`http.OCSP_REASON_PRIVILEGE_WITHDRAWN` 或
http.OCSP_REASON_AA_COMPROMISE.
Response.ocsp.revoked_at数值如果服务器提供了 OCSP 装订响应,则表示自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数,代表此证书被吊销的时间(如果证书状态是吊销)。
Response.ocsp.status字符串证书状态,为以下常量之一:`http.OCSP_STATUS_GOOD`、`http.OCSP_STATUS_REVOKED`、`http.OCSP_STATUS_UNKNOWN` 或 `http.OCSP_STATUS_SERVER_FAILED`。
Response.proto字符串用于执行传输的协议。可能的值包括“HTTP/1.0”、“HTTP/1.1”或“HTTP/2.0”。
Response.remote_ip字符串处理请求的服务器的 IP 地址。
Response.remote_port数值服务器端连接的端口。
Response.request.body字符串请求消息体内容。
Response.request.cookies对象请求 cookie。对象属性是 cookie 名称,值是 cookie 对象数组(包含 `name`、`value` 和 `replace` 字段)。
Response.request.headers对象请求头。
Response.request.method字符串请求 HTTP 方法。
Response.request.url字符串请求 URL。
Response.status数值服务器返回的 HTTP 状态码。
Response.status_text字符串(k6 v0.29.0 新增) 服务器返回的 HTTP 状态文本。
Response.timings对象HTTP 请求的性能计时信息。
Response.timings.blocked浮点数包含在发起请求前阻塞的时间(毫秒)。
Response.timings.connecting浮点数包含设置与主机的 TCP 连接所花费的时间(毫秒)。
Response.timings.tls_handshaking浮点数包含与主机进行 TLS 握手会话所花费的时间(毫秒)。
Response.timings.sending浮点数包含发送请求所花费的时间(毫秒)。
Response.timings.waiting浮点数包含等待服务器响应所花费的时间(毫秒)。
Response.timings.receiving浮点数包含接收响应数据所花费的时间(毫秒)。
Response.timings.duration浮点数请求总时间(毫秒)。等于 `sending + waiting + receiving`,即远程服务器处理请求和响应所花费的时间,不包括初始 DNS 查找/连接时间。
Response.tls_cipher_suite字符串如果建立了 TLS 会话,则为使用的密码套件。
Response.tls_version字符串如果建立了 TLS 会话,则为使用的 SSL/TLS 版本。
Response.url字符串最终获取的 URL(即经过所有潜在重定向后的 URL)。
Response.clickLink( [params] )函数将响应解析为 HTML,查找特定链接并执行相当于点击该链接的请求级操作。
Response.html()函数返回一个支持 Selection.find(selector) 的对象。
Response.json( [selector] )函数将响应消息体数据解析为 JSON 并返回一个 JS 对象或数组。此调用会缓存反序列化的 JSON 数据,后续调用将返回缓存数据。可以指定可选的选择器来提取数据的特定部分,选择器语法参见此处
Response.submitForm( [params] )函数将响应解析为 HTML,解析指定表单(默认为查找“form”元素),可选择覆盖字段,然后提交表单,考虑表单的 `method` 和 `action`。

示例

JavaScript
import { check } from 'k6';
import http from 'k6/http';

export default function () {
  const res = http.get('https://k6.io');
  for (const p in res.headers) {
    if (res.headers.hasOwnProperty(p)) {
      console.log(p + ' : ' + res.headers[p]);
    }
  }
  check(res, {
    'status is 200': (r) => r.status === 200,
    'caption is correct': (r) => r.html('h1').text() == 'Example Domain',
  });
}

一个用于发起 HTTP 请求并打印所有 HTTP 响应头的 k6 脚本