{"id":700,"date":"2013-12-12T10:03:27","date_gmt":"2013-12-12T10:03:27","guid":{"rendered":"http:\/\/www.w3.org\/community\/forum\/?p=700"},"modified":"2013-12-12T10:03:27","modified_gmt":"2013-12-12T10:03:27","slug":"proposed-http2-fix-to-improve-web-statefulness","status":"publish","type":"post","link":"https:\/\/www.w3.org\/community\/forum\/2013\/12\/12\/proposed-http2-fix-to-improve-web-statefulness\/","title":{"rendered":"proposed http\/2 fix to improve web statefulness"},"content":{"rendered":"<p><strong>Abstract<\/strong>:\u00a0 Simple http2.0 fix would remove the GET size limitation.<\/p>\n<p><strong>Problem example<\/strong>: Say you have a search form, and instead of having to pass 100 characters to the report server, you need to pass 1,000 to <strong>GET<\/strong> a report.<\/p>\n<p><strong><strong><strong><\/strong><\/strong>Problem<\/strong>:\u00a0 If state information passed from page to page is small, (e.g. a simple web page request) then GET works fine.\u00a0 But <span style=\"text-decoration: underline\">when state information is larger than will fit in a URI<\/span>, (i.e. more complex web requests), then either a session variable or POST must be used to pass the state information.\u00a0 Session variables time out and POST is idempotent and thus not suited to only passing state.\u00a0 Either way the most basic idea of web statefulness for complex non-idempotent page requests is currently broken.<\/p>\n<p>This is what commonly causes the widely discussed IE &#8220;<strong>Webpage has expired<\/strong>&#8221; error when the browser back button is used on a complex page request.\u00a0 It should be noted that\u00a0 IE is faithfully following the standards, but that the standard itself is limiting.<\/p>\n<p>Other browsers (FireFox, Chrome, Opera, and Safari) return the previously cashed page rather than report the possible problem which makes complex pages work, but is not really the best thing either because it puts the user at risk of double purchases. Furthermore, for pages to be browser independent they must be dumbed down to suit the IE method.<\/p>\n<p><strong>Proposed solution<\/strong>:\u00a0 Add a new non-idempotent method (similar to GET), for the moment let&#8217;s call it &#8220;<strong>STATE<\/strong>&#8221; to signify that you are simply passing some state data, and not making a data base update.\u00a0 Have it functionally work like &#8220;POST&#8221; in how it passes the variables in the header, i.e. with no size constraint, but be designated like GET in being treated as non-idempotent by browsers, so as to not cause expired warnings.<\/p>\n<p><strong>Usage example<\/strong>:\u00a0 <span style=\"font-family: Times New Roman,Times,serif\">&lt;form action=&#8221;MakeFlyer.php&#8221; method=&#8221;state&#8221;&gt;<\/span><\/p>\n<p><strong>A good problem reference<\/strong>:\u00a0 See the very bottom of this page relating to passing data between web pages, where it talks about: &#8220;<a title=\"Possible reasons to use &quot;POST&quot; for idempotent queries\" href=\"http:\/\/www.cs.tut.fi\/~jkorpela\/forms\/methods.html\" target=\"_blank\" rel=\"nofollow\">If the form data set is large &#8211; say, hundreds of characters &#8211; then METHOD=&#8221;GET&#8221; may cause practical problems with implementations which cannot handle that long URLs. &#8230;<\/a>&#8221;<\/p>\n<p><strong>Issues<\/strong>:\u00a0 This will not allow bookmarking the page request as you can do with a GET request.\u00a0 For applications that need that capability GET will still exist.\u00a0 It is not reasonable to simply up the size of a URI string as it has too many other implications.<br \/>\n_______<br \/>\nHope this makes sense to a few of you.\u00a0 It&#8217;s my first suggestion to W3C after 17 years of web development.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abstract:\u00a0 Simple http2.0 fix would remove the GET size limitation. Problem example: Say you have a search form, and instead of having to pass 100 characters to the report server, you need to pass 1,000 to GET a report. Problem:\u00a0 &hellip; <a href=\"https:\/\/www.w3.org\/community\/forum\/2013\/12\/12\/proposed-http2-fix-to-improve-web-statefulness\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5611,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-700","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/posts\/700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/users\/5611"}],"replies":[{"embeddable":true,"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/comments?post=700"}],"version-history":[{"count":10,"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/posts\/700\/revisions"}],"predecessor-version":[{"id":710,"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/posts\/700\/revisions\/710"}],"wp:attachment":[{"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/media?parent=700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/categories?post=700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.w3.org\/community\/forum\/wp-json\/wp\/v2\/tags?post=700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}