如何使用JavaScript确定用户是在内部网络还是外部网络?

如何使用JavaScript确定用户是在内部网络还是外部网络?,javascript,php,networking,Javascript,Php,Networking,我有一个带有JavaScript的按钮,可以“调用”php文件。 该网站可从内部网络和万维网访问 如果我在www上单击该按钮,php将无法工作,因为JavaScript中的地址是内部192.168.x.x地址 function doSomething(id) { var url ="http://192.168.1.1/phpfile.php?id" +id; var win = window.open(url, '_blank');

我有一个带有JavaScript的按钮,可以“调用”php文件。 该网站可从内部网络和万维网访问

如果我在www上单击该按钮,php将无法工作,因为JavaScript中的地址是内部192.168.x.x地址

function doSomething(id)
{
            var url ="http://192.168.1.1/phpfile.php?id" +id;

            var win = window.open(url, '_blank');
                if(win){
                    //Browser has allowed it to be opened
                    win.focus();
                }
                else
                {
                    //Broswer has blocked it
                    alert('Please allow popups for this site');
                }
}
是否可以区分呼叫是来自内部网络还是其他网络

在另一个例子(php)中,我使用if-else来解决这个问题

((substr($_SERVER['REMOTE_ADDR'],0,8) == "192.168.") ||($_SERVER['REMOTE_ADDR'] == "127.0.0.1")) 
? 'http://internal/address/' : 'http://my.external.de/''

如果按钮和JavaScript代码位于从同一服务器交付的HTML页面中,那么它可以在交付此页面之前测试并设置正确的值

$PREFIX=($服务器['REMOTE\u ADDR'],0,8)==“192.168.”)| |($服务器['REMOTE\u ADDR']==“127.0.0.1”)?”http://internal/address/' : 'http://my.external.de/''

功能剂量仪(id){
var url=“phpfile.php?id”+id;
....

据我所知,您希望您的网站在本地使用localhost/192.168.x.x/127.0.0.1或在远程web服务器上工作,并区分您拥有的配置,以便您的javascript正确地从一个切换到另一个

首先,您不能直接从javascript获取IP地址,您需要使用中继网站:请参阅以获取答案

但是,在您的情况下,我相信有一种更简单的方法可以继续,并且没有任何“如果”。Javascript(或浏览器)足够智能,可以为您路由调用。请将代码更改为:

function doSomething(id)
{
        var url ="/phpfile.php?id" +id;

        var win = window.open(url, '_blank');
            if(win){
                //Browser has allowed it to be opened
                win.focus();
            }
            else
            {
                //Broswer has blocked it
                alert('Please allow popups for this site');
            }
}

如果您从localhost.加载运行脚本的页面,您的客户端浏览器将自动将调用路由到localhost;如果您从my.external.de.加载运行脚本的页面,则从my.external.de.

使用
JavaScript
,这似乎是不可能的!@RayonDabre:不完全正确。您可以点击外部服务或r如中所述使用WebRTC。我必须在IIS中添加一个新的虚拟文件夹,但它正在工作。谢谢!