fgu*_*len 1 ruby-on-rails localhost request
我必须确定请求是否来自本地主机。
我在尝试:
要求 http://localhost:3000
# MyController
request.local? # -> 0
request.host # -> localhost
request.ip # -> ::1
request.remote_ip # -> ::1
Run Code Online (Sandbox Code Playgroud)
要求 http://127.0.0.1:3000
# MyController
request.local? # -> 0
request.host # -> 127.0.0.1
request.ip # -> 127.0.0.1
request.remote_ip # -> 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
我想知道是否有标准的方法。看起来像解决方案:ApplicationController.local_request?但受到保护且由于request.local?返回0本地请求而无法正常工作。
我也不能相信,request.host因为它可以被/etc/hosts花招欺骗。
request.local?工作原理,它返回0,因此true在Ruby中,因为一切都在Ruby是true除了false和nil。
如果您查看源代码,它是使用正则表达式完成的,因此0预期的正确结果也是如此
def local?
LOCALHOST =~ remote_addr && LOCALHOST =~ remote_ip
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
975 次 |
| 最近记录: |