A ReqCancelled page can be canceled by request of the client browser (visitor) or the web server.
Server-side values
After it assembles an HTTP response or request page from the TCP packets, the HTTP HEADER is available. In the header, the values that are calculated by the server for HeaderSize and DataSize of the response or request are displayed.
In the following example, the raw response is displayed:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Date: Fri, 25 Feb 2011 14:40:14 GMT
Cache-Control: private
Content-Length: 83
<html>
<body>
Response
<hr>
Read 652 bytes in 7ms.
</body>
</html>
In the previous example, the Content-Length
value reported by the server is 83 bytes.
PCA-calculated values
The PCA also calculates the actual observed size of the hit from the packets when they are stitched together.
These values are stored in the [env]
section of the request:
[env]
...
RequestHeaderSize=1741
RequestDataSize=0
RequestSize=1741
ResponseHeaderSize=418
ResponseDataSize=25151
ResponseSize=25569
...
Analyzing content size values
As a result, the PCA uses two sets of sizing values:
- The server-side values
- The values that are observed and calculated by the PCA
These numbers must match.
Note: If the actual values observed by the PCA are lower than the server-side values inserted into the response header, the PCA marks the hit as a ReqCancelled hit.
Chunked Transfer Encoding
There is a special case when the Content-Length
value is not reported by the server. In chunked transfer encoding, the server transfers data by using the HTTP protocol without knowing in advance the size of the entire message body. When chunked transfer encoding is enabled by the server, following is the response:
.HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Cache-Control: private
Pragma: no-cache
Set-Cookie: logging=CC4993FF05A9AC05B52CD9756B094B10|egapp39p|;
Domain=.example.com; Path=/
Set-Cookie: DealDetectorUser=true; Domain=.example.com; Expires=Thu,
20-Feb-2031 14:39:33 GMT; Path=/
P3P: CP="CAO DSP CURa ADMa DEVa TAIa PSAa PSDa IVAi IVDi CONi OUR DELi SAMi
OTRi BUS PHY ONL UNI PUR COM NAV INT DEM STA POL HEA PRE GOV"
Content-Type: text/html
Date: Fri, 25 Feb 2011 14:39:33 GMT
Transfer-Encoding: chunked
In the previous example, there is no reported value for Content-Length
. Since the length of the content is not known in advance, the following value is inserted:
Transfer-Encoding: chunked
When the PCA observes that the transfer is chunked, it assembles the packets into the hit and tracks the DataSize
value for the page until it reaches the final chunked packet. This last packet is designated by a zero-length chunk (chunk size that is coded as 0
) and lacking any data section.
Note: Since the server does not report a Content-Length
value in chunked transfer encoding, the header in each chunk contains an entry for the length of the chunk. As a result, the actual total length of the chunk is calculated dynamically. If any chunk fails to provide all of the data as reported in its header, the PCA marks the page where the chunk is displayed as a ReqCancelled page.
Recorded Data
When a hit is identified as including a canceled request, the Tealeaf CX Passive Capture Application inserts the following information into the [env]
section:
- ReqCancelled by Visitor (client browser):
[env] ? ReqCancelled=Client ?
- ReqCancelled by Server:
[env] ? ReqCancelled=Server ?
HTTP Status Code
The HTTP Status Code is generated as part of the HTTP response. The Status Code for a ReqCancelled hit depends on when the hit was canceled:
When ReqCancelled occurred | Status Code value(s) |
Before the server sent any response | Status Code = 0 |
After the server sent any response | Some value other than 200 (OK) |
Other characteristics
Depending on when and how the request was canceled, some parts of the hit data can be malformed:
- For hits submitted from Tealeaf CX UI Capture for AJAX, the
[xml1]
section can be malformed or incomplete, if the POST was interrupted before completion. - If it is included for capture by the PCA, an incomplete or malformed version of the
[RawRequest]
section can indicate that the request was canceled before processing of the response began on the server. - For hits canceled during the generation of the response, parts of the response can be missing.
Note: Whether a hit was ReqCancelled or fulfilled, the HTTP Request header field is always included. The PCA does not capture a hit if this request header is missing.