An HTTP request. This is consumed by service and do_* methods in WEBrick servlets
- #
- B
- C
- E
- H
- K
- M
- N
- P
- Q
- R
- S
BODY_CONTAINABLE_METHODS | = | [ "POST", "PUT" ] |
[R] | addr | The socket address of the server |
[R] | attributes | Hash of request attributes |
[R] | cipher | HTTP request SSL cipher |
[R] | client_cert | HTTP request client certificate |
[R] | keep_alive | Is this a keep-alive connection? |
[R] | peeraddr | The socket address of the client |
[R] | request_time | The local time this request was received |
[R] | server_cert | HTTP request server certificate |
[RW] | user | The remote user (CGI variable) |
Creates a new HTTP request. WEBrick::Config::HTTP is the default configuration.
# File lib/webrick/httprequest.rb, line 151 def initialize(config) @config = config @buffer_size = @config[:InputBufferSize] @logger = config[:Logger] @request_line = @request_method = @unparsed_uri = @http_version = nil @request_uri = @host = @port = @path = nil @script_name = @path_info = nil @query_string = nil @query = nil @form_data = nil @raw_header = Array.new @header = nil @cookies = [] @accept = [] @accept_charset = [] @accept_encoding = [] @accept_language = [] @body = "" @addr = @peeraddr = nil @attributes = {} @user = nil @keep_alive = false @request_time = nil @remaining_size = nil @socket = nil @forwarded_proto = @forwarded_host = @forwarded_port = @forwarded_server = @forwarded_for = nil end
Retrieves header_name
Returns the request body.
The content-length header
The content-type header
Iterates over the request headers
The host this request is for
Should the connection this request was made on be kept alive?
This method provides the metavariables defined by the revision 3 of “The WWW Common Gateway Interface Version 1.1” Web.Golux.Com/coar/cgi/
# File lib/webrick/httprequest.rb, line 374 def meta_vars meta = Hash.new cl = self["Content-Length"] ct = self["Content-Type"] meta["CONTENT_LENGTH"] = cl if cl.to_i > 0 meta["CONTENT_TYPE"] = ct.dup if ct meta["GATEWAY_INTERFACE"] = "CGI/1.1" meta["PATH_INFO"] = @path_info ? @path_info.dup : "" #meta["PATH_TRANSLATED"] = nil # no plan to be provided meta["QUERY_STRING"] = @query_string ? @query_string.dup : "" meta["REMOTE_ADDR"] = @peeraddr[3] meta["REMOTE_HOST"] = @peeraddr[2] #meta["REMOTE_IDENT"] = nil # no plan to be provided meta["REMOTE_USER"] = @user meta["REQUEST_METHOD"] = @request_method.dup meta["REQUEST_URI"] = @request_uri.to_s meta["SCRIPT_NAME"] = @script_name.dup meta["SERVER_NAME"] = @host meta["SERVER_PORT"] = @port.to_s meta["SERVER_PROTOCOL"] = "HTTP/" + @config[:HTTPVersion].to_s meta["SERVER_SOFTWARE"] = @config[:ServerSoftware].dup self.each{|key, val| next if /^content-type$/i =~ key next if /^content-length$/i =~ key name = "HTTP_" + key name.gsub!(/-/o, "_") name.upcase! meta[name] = val } meta end
Parses a request from socket
. This is called internally by WEBrick::HTTPServer.
# File lib/webrick/httprequest.rb, line 191 def parse(socket=nil) @socket = socket begin @peeraddr = socket.respond_to?(:peeraddr) ? socket.peeraddr : [] @addr = socket.respond_to?(:addr) ? socket.addr : [] rescue Errno::ENOTCONN raise HTTPStatus::EOFError end read_request_line(socket) if @http_version.major > 0 read_header(socket) @header['cookie'].each{|cookie| @cookies += Cookie::parse(cookie) } @accept = HTTPUtils.parse_qvalues(self['accept']) @accept_charset = HTTPUtils.parse_qvalues(self['accept-charset']) @accept_encoding = HTTPUtils.parse_qvalues(self['accept-encoding']) @accept_language = HTTPUtils.parse_qvalues(self['accept-language']) end return if @request_method == "CONNECT" return if @unparsed_uri == "*" begin setup_forwarded_info @request_uri = parse_uri(@unparsed_uri) @path = HTTPUtils::unescape(@request_uri.path) @path = HTTPUtils::normalize_path(@path) @host = @request_uri.host @port = @request_uri.port @query_string = @request_uri.query @script_name = "" @path_info = @path.dup rescue raise HTTPStatus::BadRequest, "bad URI `#{@unparsed_uri}'." end if /close/io =~ self["connection"] @keep_alive = false elsif /keep-alive/io =~ self["connection"] @keep_alive = true elsif @http_version < "1.1" @keep_alive = false else @keep_alive = true end end
The port this request is for
The client's IP address
The server name this request is for
Is this an SSL request?
[R] | accept | The Accept header value |
[R] | accept_charset | The Accept-Charset header value |
[R] | accept_encoding | The Accept-Encoding header value |
[R] | accept_language | The Accept-Language header value |
[R] | cookies | The parsed request cookies |
[R] | header | The parsed header of the request |
[R] | raw_header | The raw header of the request |
[R] | http_version | The HTTP version of the request |
[R] | request_line | The complete request line such as:
|
[R] | request_method | The request method, GET, POST, PUT, etc. |
[R] | unparsed_uri | The unparsed URI of the request |
[R] | path | The request path |
[RW] | path_info | The path info (CGI variable) |
[RW] | query_string | The query from the URI of the request |
[R] | request_uri | The parsed URI of the request |
[RW] | script_name | The script name (CGI variable) |