程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从 http.Request 获取客户端 IP 地址的正确方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从 http.request 获取客户端 IP 地址的正确方法?

开发过程中遇到从 http.request 获取客户端 IP 地址的正确方法的问题如何解决?下面主要结合日常开发的经验,给出你关于从 http.request 获取客户端 IP 地址的正确方法的解决方法建议,希望对你解决从 http.request 获取客户端 IP 地址的正确方法有所启发或帮助;

查看http.request您可以找到以下成员变量:

// http defines that header names are case-insensitive.
// The request parser implements this by canonicalizing the
// name, making the first character and any characters
// following a hyphen uppercase and the rest lowercase.
//
// For clIEnt requests certain headers are automatically
// added and may overrIDe values in header.
//
// See the documentation for the request.Write method.
header header

// RemoteAddr allows http servers and other software to record
// the network address that sent the request, usually for
// logging. This fIEld is not filled in by Readrequest and
// has no defined format. The http server in this package
// sets RemoteAddr to an "IP:port" address before invoking a
// handler.
// This fIEld is ignored by the http clIEnt.
RemoteAddr String

您可以使用RemoteAddr获取远程客户端的 IP 地址和端口(格式为“IP:port”),这是原始请求者或最后一个代理(例如位于您的服务器前面的负载均衡器)的地址。

这就是你所拥有的一切。

然后您可以调查不区分大小写的标题(根据上面的文档),这意味着您的所有示例都将工作并产生相同的结果:

req.header.Get("X-ForWARDed-For") // cAPItalisation
req.header.Get("x-forWARDed-for") // doesn't
req.header.Get("X-FORWARDED-FOR") // matter

是因为内部http.header.Get会为您规范密钥。(如果您想直接访问标头映射,而不是通过Get,则需要先使用http.CanonicalHeaderKey。)

最后,"X-ForWARDed-For"可能是您想要查看的字段,以便获取有关客户端 IP 的更多信息。这在很大程度上取决于远程端使用的 http 软件,因为客户端可以根据需要将任何内容放入其中。另请注意,此字段的预期格式是逗号+空格分隔的 IP 地址列表。您需要稍微解析一下以获得您选择的单个 IP(可能是列表中的第一个 IP),例如:

// Assuming format is as expected
ips := Strings.Split("10.0.0.1, 10.0.0.2, 10.0.0.3", ", ")
for _, ip := range ips {
    fmt.Println(ip)
}

将产生:

10.0.0.1
10.0.0.2
10.0.0.3

解决方法

@H_801_49@

获取所有客户端 IP 地址的正确方法是http.request什么?在php有很多的变数,我应该检查。在 Go 上也一样吗?

我发现的一个是:

req.RemoteAddr

请求是否区分大小写?例如x-forWARDed-forX-ForWARDed-For和相同X-FORWARDED-FOR?(来自req.Header.Get("X-FORWARDED-FOR"))

大佬总结

以上是大佬教程为你收集整理的从 http.Request 获取客户端 IP 地址的正确方法全部内容,希望文章能够帮你解决从 http.Request 获取客户端 IP 地址的正确方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。