Solved

HTTP 1.1 Protocol Compliance - RFC 2616

Posted on 2011-02-25
1
948 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

Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

Question has a verified solution.

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

Introduction and Prerequisites This article describes methods for detecting whether a client browser accepts and returns HTTP cookies and whether the client browser runs JavaScript.  Most client browsers will, by default, be configured to use cooki…
Configuring network clients can be a chore, especially if there are a large number of them or a lot of itinerant users.  DHCP dynamically manages this process, much to the relief of users and administrators alike!
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

820 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