Solved

HTTP 1.1 Protocol Compliance - RFC 2616

Posted on 2011-02-25
1
944 Views
Last Modified: 2012-05-11
I am connecting to an web server via an F5.  The F5 has HTTP protocol enforcement enabled and I am encountering a strange problem.

However, the CRUX of my question is:

Can a Web Server send more than one "HTTP/1.1 100 Continue" response codes to a client is the following scenario:

1.  Client Connects to Web Server
2.  Client SENDS POST HEADER
  
    POST /site/service HTTP/1.1
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.3615)
    Authorization: Basic b52gstehdy7637=
    Content-Type: text/xml; charset=utf-8
    SOAPAction: "helloMessage"
    Host: akl34svr.internal
    Content-Length: 1008
    Expect: 100-continue

Open in new window

3.  Server Sends:
HTTP/1.1 100 Continue

Open in new window

4.  Server Sends:
HTTP/1.1 100 Continue

Open in new window

5.  Client Sends "POST REQUEST"
6.  Server Sends:
HTTP/1.1 200 OK

Open in new window

7.  Server Sends: "Response Header"
8.  Server Sends: "Response Body"
9.  Connection Closes

(With the exception of 1 and 9 - every numbered entry reflects a unique TCP packet on the wire)

For some reason this server is ALWAYS sending two HTTP/1.1 100 Continue responses immediately after it receives the POST Header.  I have tried some other servers and they only send one "HTTP/1.1 100 Continue".  So I want to know if this is RFC Compliant.

Additionally I have also tried not waiting for the "HTTP/1.1 100 Continue" and just sending my "POST REQUEST" immediately.  This results in the duplicate "HTTP/1.1 100 Continue"s arriving between packet 5 and packet 6.

As reference (and this is not the question) the F5 barfs when the "HTTP/1.1 100 Continue" packets arrive within 1ms of each other.  If they arrive within > ~200ms the F5 just accepts the traffic.  It is only when they are arriving within 1ms of each other that the F5 drops the connection.  The reason they can sometimes arrive within 1ms is because of Nagles Algorithm queuing the two outbound packets and suddenly sending them in a burst.

So just to recap the question is:

Is it RFC compliant for the server to send multiple "HTTP/1.1 100 Continue" response codes?

Thanks.

-Rowan
0
Comment
Question by:rowansmith
1 Comment
 
LVL 83

Accepted Solution

by:
Dave Baldwin earned 500 total points
ID: 34984902
Here you go: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html  The answer is: "A client MUST be prepared to accept one or more 1xx status responses prior to a regular response"
0

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Foreword In the years since this article was written, numerous hacking attacks have targeted password-protected web sites.  The storage of client passwords has become a subject of much discussion, some of it useful and some of it misguided.  Of cou…
Introduction This warning has to be one of the most commonly issued warnings in the history of PHP.  The article explains why this warning arises and what to do to mitigate the problem. How this Happens HTTP headers include many different kinds…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

778 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question