[英]How can I forward the client's IP Address to Google Places Autocomplete API
我正在从 Web 服务器调用 Google Places Autocomplete API,因此当客户端代码无法从浏览器捕获纬度/经度时,默认情况下位置偏差将始终基于我服务器的 IP 地址。 我试图找到一种方法将客户端的 IP 地址传递给 Google,而不是使用我的 IP 地址。 我已经在我的服务器 API 上捕获了客户端 IP,但似乎没有任何方法可以在自动完成请求中转发它。
从文档中,谷歌指出:
注意:如果您不提供位置和半径,API 将尝试从用户的 IP 地址检测用户的位置,并将结果偏向该位置。
我试图向自动完成请求添加不同的标头,但它们都被忽略并且仍然偏向于我的服务器 IP 上的结果。 也许我还没有找到正确的标题。
//pseudo C#
headers.Add("X-ProxyUser-Ip", "172.217.5.228");
headers.Add("X-Forwarded-For", "172.217.5.228");
是否有将客户端 IP 从我的服务器转发到 Google API 的正确方法?
源代码: https : //developers.google.com/places/web-service/autocomplete#location_biasing
目前,Google Places 服务器端 API 不支持 IP 地址作为位置偏置的参数。 所以你有两个选择。
Ipfind 服务示例
using (var webClient = new System.Net.WebClient()) {
string ip_address = "10.23.45.154";
string URL = "https://api.ipfind.com/?ip=" + ip_address;
var json = webClient.DownloadString(URL);
// extract ISO country code here and call Google Places API
}
组件— 您希望限制结果的一组位置。 目前,您最多可以使用组件过滤 5 个国家/地区。 国家/地区必须作为两个字符传递,与 ISO 3166-1 Alpha-2 兼容的国家/地区代码。 例如: components=country:fr 会将您的结果限制在法国境内。 多个国家/地区必须作为多个 country:XX 过滤器传递,并使用竖线字符 (|) 作为分隔符。 例如:components=country:us|country:pr|country:vi|country:gu|country:mp 会将您的结果限制在美国及其非法人组织领土内的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.