Javascript 从另一个域获取字符串形式的ip地址变量

Javascript 从另一个域获取字符串形式的ip地址变量,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我在一个域上有一个id.php页面,该页面创建了一个使用用户IP地址的唯一访问者“id”: 显示如下“客户端ID:aeiufweiu2h5”用户的IP地址为182.55.68.2 我试图从该页面向另一个域“idtest.php”执行文件\u get\u contents(),以将页面内容放入字符串中,但问题是该页面使用服务器IP地址发出请求 结果总是相同的“客户端ID:2GHG43JJH5443”服务器的IP地址是192.55.0.2(这是php服务器的IP) 我尝试了curl、regex和我有

我在一个域上有一个id.php页面,该页面创建了一个使用用户IP地址的唯一访问者“id”: 显示如下“客户端ID:aeiufweiu2h5”用户的IP地址为182.55.68.2

我试图从该页面向另一个域“idtest.php”执行
文件\u get\u contents()
,以将页面内容放入字符串中,但问题是该页面使用服务器IP地址发出请求

结果总是相同的“客户端ID:2GHG43JJH5443”服务器的IP地址是192.55.0.2(这是php服务器的IP)

我尝试了curl、regex和我有一个动态IP地址,但结果是一样的

有没有办法通过客户端用户IP地址来实现这一点


Javascript、ajax、jsonp、jquery……?

如果使用服务器端语言从服务器执行请求,它将始终来自服务器IP地址

如果您可以返回一些html和JS并使用客户端的浏览器,那么您可以使用AJAX发送请求,这样实际上是客户端发送请求

例如,在域1中,您可以使用一个简单的jQuery AJAX请求来测试这一点:

$( "body" ).load( "http://otherdomain.com/page.html" );
这样,在
otherdomain.com/page.html
上,您将收到来自该用户IP地址的请求

正如@JanDvorak在评论中指出的,第二个域将需要在第二个域中设置
访问控制允许来源
头(尽管有)


如果必须使用服务器完成请求,则可以使用头
X-Forwarded-for
(通常由代理使用)使用头来发送客户端的IP地址,但如果愿意,也可以使用任何自定义头。这样,您将能够访问第二个域中的客户端IP


如果您在第二台服务器上使用PHP(我根据您的标记认为是这样),请查看以从自定义头获取IP。

用PHP或其他服务器端语言运行的代码将显示您的服务器。只需使用JS或JQuery等客户端语言运行即可

您可以使用JQuery$获取远程文件的内容

$.get( "myOtherDomain.com/idtest.php", function( data ) {
  $( ".result" ).html( data );
  alert( "Load was performed." );
});
要对抗php文件上的跨站点脚本(XSS),请在上设置跨域请求。您可以访问所有网站(*),也可以访问自己的域(mydomain.com)


如果您从一个服务器端(php文件)调用另一个服务器端(php文件),它将始终为您提供服务器ip地址,而不是客户端ip地址。如果您想获得客户端IP地址,您必须从ajax(JS或Jquery)而不是从一台服务器调用另一台服务器。。。并使用ajax(JS或Jquery)调用将结果发送到其他服务器。

为什么使用java标记?客户端是否同时连接到这两个服务器?或者您正在从服务器/域2获取客户端的文件?如果是后者,您可以使用-这是代理。简单的答案是否定的。但您应该描述您试图用这种方式解决的问题。哪一方被认为是可信的(三方中)?@JanDvorak true,我添加了一段关于设置头以允许这样做的内容。
$.get( "myOtherDomain.com/idtest.php", function( data ) {
  $( ".result" ).html( data );
  alert( "Load was performed." );
});
//PHP
header('Access-Control-Allow-Origin: *');