The*_*chu 13 ip google-app-engine go recaptcha
我想将ReCAPTCHA集成到我的GAE Golang Web应用程序中.为了验证验证码,我需要获取用户的IP地址.如何从表单发布中获取用户的IP地址?
Aig*_*lis 48
ip, _, _ := net.SplitHostPort(r.RemoteAddr)
Run Code Online (Sandbox Code Playgroud)
fmt*_*MKO 26
在你的处理函数里面调用r.RemoteAddr来接收ip:port
像这样:
func renderIndexPage(w http.ResponseWriter, r *http.Request) {
ip := strings.Split(r.RemoteAddr,":")[0]
}
Run Code Online (Sandbox Code Playgroud)
更新时间:02/15/2017 @Aigars Matulis指出,在当前版本中已经有了一个功能
ip, _, _ := net.SplitHostPort(r.RemoteAddr)
Run Code Online (Sandbox Code Playgroud)
orc*_*man 24
上面的答案忽略了检查用户的IP是否由代理转发.在很多情况下,你会在RemoteAddr中找到的IP是代理的IP,它将用户的请求转发给你 - 而不是用户的IP地址!
更准确的解决方案如下所示:
package main
import (
"net"
"net/http"
)
func GetIP(r *http.Request) string {
if ipProxy := r.Header.Get("X-FORWARDED-FOR"); len(ipProxy) > 0 {
return ipProxy
}
ip, _, _ := net.SplitHostPort(r.RemoteAddr)
return ip
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9634 次 |
| 最近记录: |