-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Should handle an arbitrary steam of 1xx responses before the final response for a request. #12
Comments
I don't understand this issue. |
1xx codes can be used for temporary or incomplete responses. See for example:
People could arguably decide to have a string of 1xx codes like "102: almost going" "103: progress 25%" then "105: okay this looks done" I guess. I'm not sure if we should handle them in a very fancy way. Code 100 at the very least. |
Thanks for clarifying. |
This one is solved as well, right? |
Do we relay intermediate responses? Do we eat them? Do we crash? |
We relay one, but error out if we get a second one, given 100-Continue cannot be followed by a non-terminal status code -- except for 101 Upgrade, which HTTPBis asks to support. Any other case we choke on. |
Is this still an issue? Open for 3 months. |
I'd vote to close this one as something we don't want to support, but that would require @archaelus's approval given he opened it. |
We need to document this on devcenter. "Http intermediate responses: we don't support these except in the following cases: 100-Continue and 101-Switching Protocols" (I also don't think we should implement it unless someone comes up with a compelling use case and we know that there's actually browser support). |
WEBDAV is currently noted as no being supported in the new docs. Are there any other 1xx responses in there that people would expect using? Is it legit to just add as many as we want? |
What bits of webdav don't we support? What bits of webdav could we easily support? |
I think the rest of WEBDAV is implicitly supported as far as statuses go, but has some ambiguous cases: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
And methods (we take anything):
There's also an HTTP 'If' header and dependencies on ETags, but I haven't looked at it in depth. |
I think the |
I think it would be possible to make it work if we went to support it outside of the 100-continue (deep) workflow, which would be way too confusing otherwise. But if not, it's a question of looping on every If you really want that feature in, I guess it's workable. It just can't be used with a |
When a 100 continue expect is sent, a second one cannot be sent legally according to the behavior we decided to specify. Until we are ready to accept infinite streams of 1xx statuses (see #12), this has to be handled explicitly.
After re-reading the HTTP spec, there is nothing explicitly forbidding to send two consecutive 100-Continues -- the spec only mandates that a server must send a terminal status once it's done processing the request. I've updated docs to reflect this and commits referred above go in that direction. |
What is the current status of this? I just uploaded an app to heroku:
...and then:
...which is more or less what I'd expect to see. The 102s are relayed to me and eventually I see the 200. This works properly in Chrome, Firefox, and IE. What is interesting is that the heroku router adds its headers to the original 102 and then appears to treat the rest of the response as HTTP body bytes. From the logs:
...oops. This should be supported. The spec says:
|
From the README:
And:
Unfortunately, the Vegur application has been written before RFC 7231, at a time where the spec had this to say:
Which was ambiguous and let us implement the current behaviour. There is no time allocated for modifications enabling things such as WEBDAV support or updating the spec to RFC7231 within Heroku projects at the time to my knowledge, even though I would like to at this point. The best I can offer at the time is to bring this to our product managers to see what can be done, or to hope for open-source contributions which we'd be happy to help guide and eventually deploy. I can let you know what comes out of this. |
No description provided.
The text was updated successfully, but these errors were encountered: