Class | ActionController::AbstractRequest
In: | lib/action_controller/request.rb
Parent: | Object

CgiRequest and TestRequest provide concrete implementations.

### Methods

accepts body content_length content_type content_type_with_parameters content_type_without_parameters delete? domain format format= get? head? headers host host_with_port method parameters path path_parameters port port_string post? protocol put? query_string raw_post relative_url_root remote_ip request_method request_uri server_software ssl? standard_port subdomains symbolized_path_parameters url xhr? xml_http_request?

### Constants

TRUSTED_PROXIES | = | /^127\.0\.0\.1$|^(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\./i |  | Which IP addresses are "trusted proxies" that can be stripped from the right-hand-side of X-Forwarded-For
MULTIPART_BOUNDARY | = | %r|\Amultipart/form-data.*boundary=\"?([^\";,]+)\"?|n
EOL | = | "\015\012"

### Attributes

env | [R] | The hash of environment variables for this request, such as { ‘RAILS_ENV’ => ‘production’ }.

### Public Instance methods

accepts()

Returns the accepted MIME type for the request

body()

The request body is an IO input stream.

content_length()
content_type()

The MIME type of the HTTP request, such as Mime::XML.

For backward compatibility, the post format is extracted from the X-Post-Data-Format HTTP header if present.

delete?()

Is this a DELETE request? Equivalent to `request.method == :delete`.

domain(tld_length = 1)

Returns the domain part of a host, such as rubyonrails.org in "www.rubyonrails.org". You can specify a different `tld_length`, such as 2 to catch rubyonrails.co.uk in "www.rubyonrails.co.uk".

format()

Returns the Mime type for the format used in the request. If there is no format available, the first of the accept types will be used. Examples:

      GET /posts/5.xml   | request.format => Mime::XML
      GET /posts/5.xhtml | request.format => Mime::HTML
      GET /posts/5       | request.format => request.accepts.first (usually Mime::HTML for browsers)

format=(extension)

Sets the format by string extension, which can be used to force custom formats that are not controlled by the extension. Example:

      class ApplicationController < ActionController::Base
        before_filter :adjust_format_for_iphone

        private
          def adjust_format_for_iphone
            request.format = :iphone if request.env["HTTP_USER_AGENT"][/iPhone/]
          end
      end

get?()

Is this a GET (or HEAD) request? Equivalent to `request.method == :get`.

head?()

Is this a HEAD request? `request.method` sees HEAD as `:get`, so check the HTTP method directly.

headers()

Provides acccess to the request‘s HTTP headers, for example:

     request.headers["Content-Type"] # => "text/plain"

host()

Returns the host for this request, such as example.com.

host_with_port()

Returns a host:port string for this request, such as example.com or example.com:8080.

method()

The HTTP request method as a lowercase symbol, such as `:get`. Note, HEAD is returned as `:get` since the two are functionally equivalent from the application‘s perspective.

parameters()

Returns both GET and POST parameters in a single hash.

path()

Returns the interpreted path to requested resource after all the installation directory of this application was taken into account

path_parameters()

Returns a hash with the parameters used to form the path of the request. Returned hash keys are strings. See `symbolized_path_parameters` for symbolized keys.

Example:

      {'action' => 'my_action', 'controller' => 'my_controller'}

port()

Returns the port number of this request as an integer.

port_string()

Returns a port suffix like ":8080" if the port number of this request is not the default HTTP port 80 or HTTPS port 443.

post?()

Is this a POST request? Equivalent to `request.method == :post`.

protocol()

Return ‘https://’ if this is an SSL request and ‘http://’ otherwise.

put?()

Is this a PUT request? Equivalent to `request.method == :put`.

query_string()

Return the query string, accounting for server idiosyncracies.

raw_post()

Read the request body. This is useful for web services that need to work with raw requests directly.

relative_url_root()

Returns the path minus the web server relative installation directory. This can be set with the environment variable RAILS_RELATIVE_URL_ROOT. It can be automatically extracted for Apache setups. If the server is not Apache, this method returns an empty string.

remote_ip()

Determine originating IP address. REMOTE_ADDR is the standard but will fail if the user is behind a proxy. HTTP_CLIENT_IP and/or HTTP_X_FORWARDED_FOR are set by proxies so check for these if REMOTE_ADDR is a proxy. HTTP_X_FORWARDED_FOR may be a comma- delimited list in the case of multiple chained proxies; the last address which is not trusted is the originating IP.

request_method()

The true HTTP request method as a lowercase symbol, such as `:get`. UnknownHttpMethod is raised for invalid methods not listed in ACCEPTED_HTTP_METHODS.

request_uri()

Return the request URI, accounting for server idiosyncracies. WEBrick includes the full URL. IIS leaves REQUEST_URI blank.

server_software()

Returns the lowercase name of the HTTP server software.

ssl?()

Is this an SSL request?

standard_port()

Returns the standard port number for this request‘s protocol

subdomains(tld_length = 1)

Returns all the subdomains as an array, so ["dev", "www"] would be returned for "dev.www.rubyonrails.org". You can specify a different `tld_length`, such as 2 to catch ["www"] instead of ["www", "rubyonrails"] in "www.rubyonrails.co.uk".

symbolized_path_parameters()

The same as `path_parameters` with explicitly symbolized keys

url()

Returns the complete URL used for this request

xhr?()

Alias for xml_http_request?

xml_http_request?()

Returns true if the request‘s "X-Requested-With" header contains "XMLHttpRequest". (The Prototype Javascript library sends this header with every Ajax request.)

### Protected Instance methods

content_type_with_parameters()

The raw content type string. Use when you need parameters such as charset or boundary which aren‘t included in the content_type MIME type. Overridden by the X-POST_DATA_FORMAT header for backward compatibility.

content_type_without_parameters()

The raw content type string with its parameters stripped off.

[Validate]