diff --git a/lib/rack/request.rb b/lib/rack/request.rb index 73f893a62..4a915f0e9 100644 --- a/lib/rack/request.rb +++ b/lib/rack/request.rb @@ -403,6 +403,7 @@ def content_charset def form_data? type = media_type meth = get_header(RACK_METHODOVERRIDE_ORIGINAL_METHOD) || get_header(REQUEST_METHOD) + (meth == POST && type.nil?) || FORM_DATA_MEDIA_TYPES.include?(type) end @@ -590,7 +591,22 @@ def split_header(value) value ? value.strip.split(/[,\s]+/) : [] end - AUTHORITY = /(?(\[(?.*)\])|(?[\d\.]+)|(?[a-zA-Z0-9\.\-]+))(:(?\d+))?/ + AUTHORITY = / + # The host: + (? + # An IPv6 address: + (\[(?.*)\]) + | + # An IPv4 address: + (?[\d\.]+) + | + # A hostname: + (?[a-zA-Z0-9\.\-]+) + ) + # The optional port: + (:(?\d+))? + /x + private_constant :AUTHORITY def split_authority(authority)