A ReqCancelled page can be canceled by request of the client browser (visitor) or the web server.
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.
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:
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.
When a hit is identified as including a canceled request, the Tealeaf CX Passive Capture Application inserts the following information into the
- 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)|
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.