在不打开新页面的情况下从浏览器调用客户端URL

Calling client side URL from browser without opening new page

本文关键字:浏览器 调用 客户端 URL 情况下 新页面      更新时间:2023-09-26

我正试图创建一个按钮,通过访问URL字符串来拨打IP电话:

http://admin:password@192.168.0.20/cgi-bin/ConfigManApp.com?Id=34&Command=1&Number=0123456789

当直接在浏览器中输入时,页面返回1并拨打IP电话。

在我的网站上,我可以创建一个简单的链接,点击后,可以在新窗口中访问此页面。

有没有什么方法可以在用户没有看到它打开的情况下访问这个页面?

当然可以使用AJAX调用:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    var response = xmlhttp.responseText; //if you need to do something with the returned value
  }
}
xmlhttp.open("GET","http://admin:password@192.168.0.20/cgi-bin/ConfigManApp.com?Id=34&Command=1&Number=0123456789",true);
xmlhttp.send();

jQuery让这变得更容易:

$.get("http://admin:password@192.168.0.20/cgi-bin/ConfigManApp.com?Id=34&Command=1&Number=0123456789")

编辑:由于你正在跨域旅行,并且不能使用CORS,你可以使用javascript打开链接,他们会立即关闭窗口。以下示例:

document.getElementById("target").onclick = function(e) {
    var wnd = window.open("http://admin:password@192.168.0.20/cgi-bin/ConfigManApp.com?Id=34&Command=1&Number=0123456789");
    wnd.close();
    e.preventDefault();
};

您将使用XMLHttpRequest

function dialResponse() {
 console.log(this.responseText);//should be return value of 1
}
var oReq = new XMLHttpRequest();
oReq.onload = dialResponse;
oReq.open("get", "http://admin:password@192.168.0.20/cgi-bin/ConfigManApp.com?Id=34&Command=1&Number=0123456789", true);
oReq.send();

这将是半隐藏的。然而,它仍然是客户端发出的,所以他们会在网络记录中看到它的出现。如果你想真正隐藏这一点,你就必须在服务器端这样做。

这个javascript将在后台调用它,而不显示任何内容:

<script src="javascript">
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "http://admin:password@192.168.0.20/cgi-bin/ConfigManApp.com?Id=34&Command=1&Number=0123456789", true);
xhttp.send();
<script>

当然,如果你分析网站,它在控制台中仍然可见。如果你想在没有跟踪的情况下调用它,你可以使用像PHP这样的服务器端脚本,比如:

<?php
$response=file_get_contents("http://admin:password@192.168.0.20/cgi-bin/ConfigManApp.com?Id=34&Command=1&Number=0123456789");