- G
- P
- A
- B
- C
- E
- F
- H
- I
- K
- L
- M
- N
- O
- Q
- R
- S
- U
- X
- Rack::Request::Helpers
- ActionDispatch::Http::Cache::Request
- ActionDispatch::Http::MimeNegotiation
- ActionDispatch::Http::Parameters
- ActionDispatch::Http::FilterParameters
- ActionDispatch::Http::URL
- ActionDispatch::ContentSecurityPolicy::Request
- ActionDispatch::PermissionsPolicy::Request
- Rack::Request::Env
Constants
ENV_METHODS | = | %w[ AUTH_TYPE GATEWAY_INTERFACE PATH_TRANSLATED REMOTE_HOST REMOTE_IDENT REMOTE_USER REMOTE_ADDR SERVER_NAME SERVER_PROTOCOL ORIGINAL_SCRIPT_NAME HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_FROM HTTP_NEGOTIATE HTTP_PRAGMA HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR HTTP_ORIGIN HTTP_VERSION HTTP_X_CSRF_TOKEN HTTP_X_REQUEST_ID HTTP_X_FORWARDED_HOST ].freeze |
HTTP_METHODS | = | RFC2616 + RFC2518 + RFC3253 + RFC3648 + RFC3744 + RFC5323 + RFC4791 + RFC5789 |
HTTP_METHOD_LOOKUP | = | {} |
LOCALHOST | = | Regexp.union [/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/, /^::1$/, /^0:0:0:0:0:0:0:1(%.*)?$/] |
RFC2518 | = | %w(PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK) |
HTTP methods from RFC 2518: HTTP Extensions for Distributed Authoring – WEBDAV |
||
RFC2616 | = | %w(OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT) |
HTTP methods from RFC 2616: Hypertext Transfer Protocol – HTTP/1.1 |
||
RFC3253 | = | %w(VERSION-CONTROL REPORT CHECKOUT CHECKIN UNCHECKOUT MKWORKSPACE UPDATE LABEL MERGE BASELINE-CONTROL MKACTIVITY) |
HTTP methods from RFC 3253: Versioning Extensions to WebDAV |
||
RFC3648 | = | %w(ORDERPATCH) |
HTTP methods from RFC 3648: WebDAV Ordered Collections Protocol |
||
RFC3744 | = | %w(ACL) |
HTTP methods from RFC 3744: WebDAV Access Control Protocol |
||
RFC4791 | = | %w(MKCALENDAR) |
HTTP methods from RFC 4791: Calendaring Extensions to WebDAV |
||
RFC5323 | = | %w(SEARCH) |
HTTP methods from RFC 5323: WebDAV SEARCH |
||
RFC5789 | = | %w(PATCH) |
HTTP methods from RFC 5789: PATCH Method for HTTP |
Attributes
[R] | rack_request |
Class Public methods
empty() Link
new(env) Link
Instance Public methods
GET() Link
Override Rack’s GET
method to support indifferent access.
# File actionpack/lib/action_dispatch/http/request.rb, line 394 def GET fetch_header("action_dispatch.request.query_parameters") do |k| encoding_template = Request::Utils::CustomParamEncoder.action_encoding_template(self, path_parameters[:controller], path_parameters[:action]) rack_query_params = ActionDispatch::ParamBuilder.from_query_string(rack_request.query_string, encoding_template: encoding_template) set_header k, rack_query_params end rescue ActionDispatch::ParamError => e raise ActionController::BadRequest.new("Invalid query parameters: #{e.message}") end
POST() Link
Override Rack’s POST
method to support indifferent access.
# File actionpack/lib/action_dispatch/http/request.rb, line 407 def POST fetch_header("action_dispatch.request.request_parameters") do encoding_template = Request::Utils::CustomParamEncoder.action_encoding_template(self, path_parameters[:controller], path_parameters[:action]) param_list = nil pr = parse_formatted_parameters(params_parsers) do if param_list = request_parameters_list ActionDispatch::ParamBuilder.from_pairs(param_list, encoding_template: encoding_template) else # We're not using a version of Rack that provides raw form # pairs; we must use its hash (and thus post-process it below). fallback_request_parameters end end # If the request body was parsed by a custom parser like JSON # (and thus the above block was not run), we need to # post-process the result hash. if param_list.nil? pr = ActionDispatch::ParamBuilder.from_hash(pr, encoding_template: encoding_template) end self.request_parameters = pr end rescue ActionDispatch::ParamError, EOFError => e raise ActionController::BadRequest.new("Invalid request parameters: #{e.message}") end
authorization() Link
Returns the authorization header regardless of whether it was specified directly or through one of the proxy alternatives.
body() Link
The request body is an IO
input stream. If the RAW_POST_DATA environment variable is already set, wrap it in a StringIO.
commit_csrf_token() Link
commit_flash() Link
content_length() Link
Returns the content length of the request as an integer.
controller_class() Link
controller_class_for(name) Link
# File actionpack/lib/action_dispatch/http/request.rb, line 94 def controller_class_for(name) if name controller_param = name.underscore const_name = controller_param.camelize << "Controller" begin const_name.constantize rescue NameError => error if error.missing_name == const_name || const_name.start_with?("#{error.missing_name}::") raise MissingController.new(error.message, error.name) else raise end end else PASS_NOT_FOUND end end
form_data?() Link
Determine whether the request body contains form-data by checking the request Content-Type
for one of the media-types: application/x-www-form-urlencoded
or multipart/form-data
. The list of form-data media types can be modified through the FORM_DATA_MEDIA_TYPES
array.
A request body is not assumed to contain form-data when no Content-Type
header is provided and the request_method
is POST
.
fullpath() Link
Returns the String
full path including params of the last URL requested.
# get "/articles"
request.fullpath # => "/articles"
# get "/articles?page=2"
request.fullpath # => "/articles?page=2"
headers() Link
Provides access to the request’s HTTP headers, for example:
request.headers["Content-Type"] # => "text/plain"
http_auth_salt() Link
ip() Link
Returns the IP address of client as a String
.
key?(key) Link
Returns true if the request has a header matching the given key parameter.
request.key? :ip_spoofing_check # => true
local?() Link
True if the request came from localhost, 127.0.0.1, or ::1.
logger() Link
media_type() Link
The String
MIME type of the request.
# get "/articles"
request.media_type # => "application/x-www-form-urlencoded"
method(*args) Link
Returns the original value of the environment’s REQUEST_METHOD, even if it was overridden by middleware. See request_method
for more information.
For debugging purposes, when called with arguments this method will fall back to Object#method
original_fullpath() Link
Returns a String
with the last requested path including their params.
# get '/foo'
request.original_fullpath # => '/foo'
# get '/foo?bar'
request.original_fullpath # => '/foo?bar'
original_url() Link
Returns the original request URL as a String
.
# get "/articles?page=2"
request.original_url # => "http://www.example.com/articles?page=2"
raw_post() Link
Read the request body. This is useful for web services that need to work with raw requests directly.
remote_ip() Link
Returns the IP address of client as a String
, usually set by the RemoteIp
middleware.
remote_ip=(remote_ip) Link
request_id() Link
Returns the unique request id, which is based on either the X-Request-Id
header that can be generated by a firewall, load balancer, or web server, or by the RequestId
middleware (which sets the action_dispatch.request_id
environment variable).
This unique ID is useful for tracing a request from end-to-end as part of logging or debugging. This relies on the Rack variable set by the ActionDispatch::RequestId
middleware.
request_method() Link
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.
request_method_symbol() Link
Returns a symbol form of the request_method
.
request_parameters=(params) Link
request_parameters_list() Link
# File actionpack/lib/action_dispatch/http/request.rb, line 436 def request_parameters_list # We don't use Rack's parse result, but we must call it so Rack # can populate the rack.request.* keys we need. rack_post = rack_request.POST if form_pairs = get_header("rack.request.form_pairs") # Multipart form_pairs elsif form_vars = get_header("rack.request.form_vars") # URL-encoded ActionDispatch::QueryParser.each_pair(form_vars) elsif rack_post && !rack_post.empty? # It was multipart, but Rack did not preserve a pair list # (probably too old). Flat parameter list is not available. nil else # No request body, or not a format Rack knows [] end end
reset_csrf_token() Link
reset_session() Link
route_uri_pattern() Link
Returns the URI pattern of the matched route for the request, using the same format as bin/rails routes
:
request.route_uri_pattern # => "/:controller(/:action(/:id))(.:format)"
send_early_hints(links) Link
Early Hints is an HTTP/2 status code that indicates hints to help a client start making preparations for processing the final response.
If the env contains rack.early_hints
then the server accepts HTTP2 push for link headers.
The send_early_hints
method accepts a hash of links as follows:
send_early_hints("link" => "</style.css>; rel=preload; as=style,</script.js>; rel=preload")
If you are using javascript_include_tag
or stylesheet_link_tag
the Early Hints headers are included by default if supported.
server_software() Link
Returns the lowercase name of the HTTP server software.