Oracle iPlanet Web Server 7.0 Does Not Serve If-Range Correctly When the File Content is Changed.

(Doc ID 1352955.1)

Last updated on NOVEMBER 05, 2016

Applies to:

Oracle iPlanet Web Server - Version: 7.0 and later   [Release: 7.0 and later ]
Information in this document applies to any platform.

Symptoms

On iPlanet Web Server 7.0 version (7.0 to 7.0 update 12), when the HTTP request uses "If-Range: <e-tag>" HTTP header, even if the underlying document had changed, the response still returns "206 Partial Content" with a partial content. The expected response should be that the full HTTP content of the requested file need to be sent with HTTP status code 200.

A sample illustration of this can be seen below:

1. Access a static URL resource test.html.
    For example, let say resource "http://host:port/test.html", and record the HTTP header response:
HTTP/1.1 200 OK
Server: Oracle-iPlanet-Web-Server/7.0
Date: 17 Aug 2011 02:02:20 GMT
Cache-control: max-age=60
Content-type: text/html
Last-modified: Tue, 21 Jun 2011 13:33:10 GMT
Etag: "e-4e4b1ee6"
Accept-ranges: bytes

2.  Using the above E-tag value from the header response and specified as shown below
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET /test.html HTTP/1.1
Host: localhost
If-Range: "e-4e4b1ee6"
Range: bytes=1-
Connection: close

HTTP/1.1 206 Partial Content
Server: Oracle-iPlanet-Web-Server/7.0
Date: Wed, 17 Aug 2011 02:08:20 GMT
Content-type: text/html
Last-modified: Wed, 17 Aug 2011 01:52:38 GMT
Etag: "e-4e4b1ee6"
Content-length: 13
Content-range: bytes 1-13/14

We get a partial content and the required content. This is expected.

3. Now, if we edit the content of the test.html page,  we can confirm we get a new
    E-tag value (by using step 1). The new E-tag value for this is "b-4e4b22ec".

However, if we issue the same request like step 2 but using the stale E-tag value,  the following behavior is seen:
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET /test.html HTTP/1.1
Host: localhost
If-Range: "e-4e4b1ee6"
Range: bytes=1-
Connection: close

HTTP/1.1 206 Partial Content
Server: Oracle-iPlanet-Web-Server/7.0
Date: Wed, 17 Aug 2011 02:10:02 GMT
Content-type: text/html
Last-modified: Wed, 17 Aug 2011 02:09:48 GMT
Etag: "b-4e4b22ec"
Content-length: 10
Content-range: bytes 1-10/11

The expected result according to HTTP specification is that if a "If-Range" request is made with a non-matching "Etag" value, a full content of the file with HTTP status code 200 be returned. This is not seen.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms