{"action":"closed","issue":{"url":"https://api.github.com/repos/falconry/falcon/issues/551","labels_url":"https://api.github.com/repos/falconry/falcon/issues/551/labels{/name}","comments_url":"https://api.github.com/repos/falconry/falcon/issues/551/comments","events_url":"https://api.github.com/repos/falconry/falcon/issues/551/events","html_url":"https://github.com/falconry/falcon/issues/551","id":76802248,"number":551,"title":"HTTP request content getting improperly sorted into falcon Request object attributes","user":{"login":"josefdlange","id":1062835,"avatar_url":"https://avatars.githubusercontent.com/u/1062835?v=3","gravatar_id":"","url":"https://api.github.com/users/josefdlange","html_url":"https://github.com/josefdlange","followers_url":"https://api.github.com/users/josefdlange/followers","following_url":"https://api.github.com/users/josefdlange/following{/other_user}","gists_url":"https://api.github.com/users/josefdlange/gists{/gist_id}","starred_url":"https://api.github.com/users/josefdlange/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josefdlange/subscriptions","organizations_url":"https://api.github.com/users/josefdlange/orgs","repos_url":"https://api.github.com/users/josefdlange/repos","events_url":"https://api.github.com/users/josefdlange/events{/privacy}","received_events_url":"https://api.github.com/users/josefdlange/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-05-15T17:50:42Z","updated_at":"2015-05-15T18:00:08Z","closed_at":"2015-05-15T18:00:08Z","body":"This is a weird problem, and I'm having a hard time articulating it, but suddenly yesterday I am unable to properly interact with falcon Request objects. It would appear that the attributes of the request are being improperly picked from the HTTP request body.\r\n\r\nFor example, the `method` and `path` attributes are populated with the `CONTENT-TYPE` header, such that:\r\n\r\n`request.method` == `\"CONTENT_TYPE\"`\r\n`request.path` == `\"application/json\"`\r\n\r\nI am at a total loss as to why this is occurring. At first I thought my HTTP client was screwing things up, but I tried a variety of clients, from cURL, to HTTPie, to the Python requests library, and simple am having no luck.\r\n\r\nAn example of the request object and its attributes for a typical `POST` request:\r\n\r\n```\r\n  __format__ == <built-in method __format__ of Request object at 0x10a680478>\r\n  __getattribute__ == <method-wrapper '__getattribute__' of Request object at \r\n  __hash__ == <method-wrapper '__hash__' of Request object at 0x10a680478>\r\n  __init__ == <bound method Request.__init__ of <falcon.request.Request object at \r\n  __module__ == falcon.request\r\n  __new__ == <built-in method __new__ of type object at 0x108dc9a80>\r\n  __qualname__ == Request\r\n  __reduce__ == <built-in method __reduce__ of Request object at 0x10a680478>\r\n  __reduce_ex__ == <built-in method __reduce_ex__ of Request object at 0x10a680478>\r\n  __repr__ == <method-wrapper '__repr__' of Request object at 0x10a680478>\r\n  __setattr__ == <method-wrapper '__setattr__' of Request object at 0x10a680478>\r\n  __sizeof__ == <built-in method __sizeof__ of Request object at 0x10a680478>\r\n  __slots__ == ('_cached_headers', '_cached_uri', '_cached_relative_uri', query_string', 'stream', 'context', '_wsgierrors', 'options')\r\n  __str__ == <method-wrapper '__str__' of Request object at 0x10a680478>\r\n  __subclasshook__ == <built-in method __subclasshook__ of type object at \r\n  _cached_headers == None\r\n  _cached_relative_uri == None\r\n  _cached_uri == None\r\n  _params == {}\r\n  _parse_form_urlencoded == <bound method Request._parse_form_urlencoded of <falcon.\r\n  _wrap_stream == <bound method Request._wrap_stream of <falcon.request.Request object \r\n  _wsgierrors == <open file '<stderr>', mode 'w' at 0x108e7f1e0>\r\n  accept == */*\r\n  app == \r\n  auth == None\r\n  client_accepts == <bound method Request.client_accepts of <falcon.request.Request \r\n  client_accepts_json == True\r\n  client_accepts_msgpack == True\r\n  client_accepts_xml == True\r\n  client_prefers == <bound method Request.client_prefers of <falcon.request.Request \r\n  content_length == 257\r\n  content_type == None\r\n  context == {}\r\n  context_type == None\r\n  date == None\r\n  env == {'CONTENT_LENGTH': '257', 'wsgi.file_wrapper': <class 'waitress.buffers.2.1 (Macintosh; OS X/10.10.3) GCDHTTPRequest', 'HTTP_CONNECTION': 'close', ', 'wsgi.run_once': False, 'wsgi.errors': <open file '<stderr>', mode 'w' at ARE': 'Local (Palladium)', 'SCRIPT_NAME': '', 'wsgi.url_scheme': 'http', EQUEST_METHOD': 'CONTENT-TYPE:', 'HTTP_HOST': 'localhost:8000', 'PATH_INFO': OTOCOL': 'HTTP/1.0', 'QUERY_STRING': '', 'wsgi.version': (1, 0), 'wsgi.multiprocess': \r\n  expect == None\r\n  get_header == <bound method Request.get_header of <falcon.request.Request object at \r\n  get_param == <bound method Request.get_param of <falcon.request.Request object at \r\n  get_param_as_bool == <bound method Request.get_param_as_bool of <falcon.request.\r\n  get_param_as_int == <bound method Request.get_param_as_int of <falcon.request.\r\n  get_param_as_list == <bound method Request.get_param_as_list of <falcon.request.\r\n  headers == {'CONNECTION': 'close', 'CONTENT-LENGTH': '257', 'HOST': ; OS X/10.10.3) GCDHTTPRequest'}\r\n  host == localhost\r\n  if_match == None\r\n  if_modified_since == None\r\n  if_none_match == None\r\n  if_range == None\r\n  if_unmodified_since == None\r\n  log_error == <bound method Request.log_error of <falcon.request.Request object at \r\n  method == CONTENT-TYPE:\r\n  options == <falcon.request.RequestOptions object at 0x10a5af050>\r\n  params == {}\r\n  path == application/json\r\n  protocol == http\r\n  query_string == \r\n  range == None\r\n  relative_uri == application/json\r\n  stream == <_io.BytesIO object at 0x10a681890>\r\n  subdomain == None\r\n  uri == http://localhost:8000application/json\r\n  url == http://localhost:8000application/json\r\n  user_agent == Paw/2.2.1 (Macintosh; OS X/10.10.3) GCDHTTPRequest\r\n  ```\r\n(Obtained by iterating over `dir(request)` using `__getattribute__()`)\r\n\r\nThis is really strange and I have no idea what's going on... any thoughts?"}}