我有一个在端口3000上运行的Node.js应用程序,它正在使用axios进行服务器端的ajax调用。
工作如下
我的axio ajax电话是在 /public/views/example.js
中进行的example() {
axios.get (
// server ip, port and route
"http://192.168.1.5:3000/example", {
params : {
arg01: "nothing"
}
}
)
.then (
result => console.log(result)
)
.catch (
error => console.log(error)
);
}
及其调用的路线 /public/logic/example_route.js
router.get("/example", function(req, res) {
// just to test the ajax request and response
var result = req.query.arg01;
res.send(result);
});
所以当我从网络内部运行它时,这一切都运行良好但是如果我尝试从网络外部运行它(使用转发了3000端口的DNS)它失败了,我想这是因为执行时外部192.168.1.5不再有效,因为我必须使用DNS。
当我将axios调用更改为以下
时example() {
axios.get (
// server ip, port and route
"http://www.dnsname.com:3000/example", {
params : {
arg01: "nothing"
}
}
)
.then (
result => console.log(result)
)
.catch (
error => console.log(error)
);
}
然后它再次在外部工作,但不在内部工作。有没有解决这个问题的方法?
我知道在使用php进行ajax调用时我没有这个问题,因为我可以使用脚本的实际位置而不是路径
$.ajax({
url : "logic/example.php",
type : "GET",
dataType : "json",
data : {
"arg01":"nothing"
},
success : function(result) {
console.log(result);
},
error : function(log) {
console.log(log.message);
}
});
是否有可能实现与Node.js和axios类似的东西?
答案 0 :(得分:2)
您可以使用没有actuall主机和端口的路径。
example() {
axios.get (
// just the path without host or port
"/example", {
params : {
arg01: "nothing"
}
}
)
.then (
result => console.log(result)
)
.catch (
error => console.log(error)
);
}