Class ActionDispatch::Request
In: lib/action_dispatch/http/request.rb
lib/action_dispatch/middleware/flash.rb
lib/action_dispatch/middleware/cookies.rb
Parent: Rack::Request

Methods

Included Modules

ActionDispatch::Http::Cache::Request ActionDispatch::Http::MimeNegotiation ActionDispatch::Http::Parameters ActionDispatch::Http::FilterParameters ActionDispatch::Http::Upload ActionDispatch::Http::URL

Constants

LOCALHOST = [/^127\.0\.0\.\d{1,3}$/, "::1", /^0:0:0:0:0:0:0:1(%.*)?$/].freeze
ENV_METHODS = %w[ AUTH_TYPE GATEWAY_INTERFACE PATH_TRANSLATED REMOTE_HOST REMOTE_IDENT REMOTE_USER REMOTE_ADDR SERVER_NAME SERVER_PROTOCOL HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_FROM HTTP_NEGOTIATE HTTP_PRAGMA ].freeze
RFC2616 = %w(OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT)   List of HTTP request methods from the following RFCs: Hypertext Transfer Protocol — HTTP/1.1 (www.ietf.org/rfc/rfc2616.txt) HTTP Extensions for Distributed Authoring — WEBDAV (www.ietf.org/rfc/rfc2518.txt) Versioning Extensions to WebDAV (www.ietf.org/rfc/rfc3253.txt) Ordered Collections Protocol (WebDAV) (www.ietf.org/rfc/rfc3648.txt) Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol (www.ietf.org/rfc/rfc3744.txt) Web Distributed Authoring and Versioning (WebDAV) SEARCH (www.ietf.org/rfc/rfc5323.txt) PATCH Method for HTTP (www.ietf.org/rfc/rfc5789.txt)
RFC2518 = %w(PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK)
RFC3253 = %w(VERSION-CONTROL REPORT CHECKOUT CHECKIN UNCHECKOUT MKWORKSPACE UPDATE LABEL MERGE BASELINE-CONTROL MKACTIVITY)
RFC3648 = %w(ORDERPATCH)
RFC3744 = %w(ACL)
RFC5323 = %w(SEARCH)
RFC5789 = %w(PATCH)
HTTP_METHODS = RFC2616 + RFC2518 + RFC3253 + RFC3648 + RFC3744 + RFC5323 + RFC5789
HTTP_METHOD_LOOKUP = Hash.new { |h, m| h[m] = m.underscore.to_sym if HTTP_METHODS.include?(m) }
TRUSTED_PROXIES = %r{ ^127\.0\.0\.1$ | # localhost ^(10 | # private IP 10.x.x.x 172\.(1[6-9]|2[0-9]|3[0-1]) | # private IP in the range 172.16.0.0 .. 172.31.255.255 192\.168 # private IP 192.168.x.x )\. }x   Which IP addresses are "trusted proxies" that can be stripped from the right-hand-side of X-Forwarded-For.

en.wikipedia.org/wiki/Private_network#Private_IPv4_address_spaces.

Public Class methods

Public Instance methods

Override Rack‘s GET method to support indifferent access

Override Rack‘s POST method to support indifferent access

Returns the authorization header regardless of whether it was specified directly or through one of the proxy alternatives.

The request body is an IO input stream. If the RAW_POST_DATA environment variable is already set, wrap it in a StringIO.

Returns the content length of the request as an integer.

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

Access the contents of the flash. Use flash["notice"] to read a notice you put there or flash["notice"] = "hello" to put a new one.

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

Is this a HEAD request? Equivalent to request.method == :head.

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

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

True if the request came from localhost, 127.0.0.1.

Returns the original value of the environment‘s REQUEST_METHOD, even if it was overridden by middleware. See request_method for more information.

Returns a symbol form of the method

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

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

query_parameters()

Alias for GET

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

Determines 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.

Returns the HTTP \method that the application should see. In the case where the \method was overridden by a middleware (for instance, if a HEAD request was converted to a GET, or if a _method parameter was used to determine the \method the application should use), this \method returns the overridden value, not the original.

Returns a symbol form of the request_method

request_parameters()

Alias for POST

TODO This should be broken apart into AD::Request::Session and probably be included by the session middleware.

Returns the lowercase name of the HTTP server software.

xhr?()

Alias for xml_http_request?

Returns true if the "X-Requested-With" header contains "XMLHttpRequest" (case-insensitive). All major JavaScript libraries send this header with every Ajax request.

[Validate]