I’ve had a lot of issues getting CF to play nicely with my own http server implementation, and today I finally investigated the problem. To preface, it’s not Cloudflare’s fault that I wrote my own buggy server, but I believe the behavior was unexpected so that’s why I’m reporting it
While implementing HTTP 1.1, I misread the documentation and incorrectly assumed that 100 Continue was always required for HTTP 1.1 requests to work (again, my fault).
Browsers just swallow the 100 Continue, and RFC 7231 even suggests that this is the behavior that should be implemented:
What workers would do is treat 100 Continue as the final response and then the rest of the socket stream as the body (1.1 allows for this 1.0-behavior for compatibility). I was finally able to debug this using wrangler by just writing a test proxy, here’s what that looked like: (8787 = wrangler, 80 = my impl)
And here is the raw response, as reported by CURL:
Again, not blaming CF for this, but I figured I would report it just in case