1 参考资料

rails-in-some-of-the-ways-to-obtain-information-url

2 Details

打开的uri为 /post/Hello-World

fullurl为 http://test.blog.zool.it:3000/post/Hello-world

则rails的路由生成一下几个方法

2.1 取得域名

domain(tld_length = 1)

2.2 取得子域名

request.domain #=> zool.it request.domain(2) #=> blog.zool.it

subdomain(tld_length = 1)

subdomains(tld_length = 1)

request.subdomain #=> "test.blog" request.subdomain(2) #=> "test" request.subdomain #=> ["test", "blog"] request.subdomain(2) #=> ["test"]

2.3 取得主机名

host()

request.host #=> "test.blog.zool.it"

2.4 取得带端口的主机名

host_with_port()

request.host_with_port #=> "test.blog.zool.it:3000"

2.5 代理服务器的主机名和端口

raw_host_with_port()

request.raw_host_with_port #=> "test.blog.zool.it:3000"

2.6 取得由raw_host_with_port()获得的端口数值

port()

request.port #=> 3000

2.7 取得raw_host_with_port()获得的端口文本字符串

port_string()

request.port_string #=> ":3000"

2.8 取得当前使用网络协议

protocol()

request.protocol #=> "http://"

2.9 取得网络协议

scheme()

request.scheme #=> "http"

2.10 request请求的uri地址

request_uri()

request.request_uri #=> "/posts/Hello-World" server_port

2.11 取得由env['SERVER_PORT']返回的端口值

server_port()

request.server_port #=> "3000"

2.12 当前是否在是用https加密协议

ssl?()

request.ssl?() #=> false

2.13 返回网络协议标准端口(http为80, https为443)

standard_port()

request.standard_port #=> 80

2.14 判断当前协议是否是标准端口

standard_port?()

request.standard_port? #=> false

2.15 取得当前requset完整url

url()

request.url #=> "http://test.blog.zool.it:3000/posts/Hello-World"