【发布时间】:2012-04-23 04:01:51
【问题描述】:
我一直在玩 node.js,然后遇到了 express 框架。当使用不同的端口时,我似乎无法让它工作。
我在 http://localhost:8888 上有我的 ajax,这是我在 Mac 上运行的 MAMP 服务器。
$.ajax({
url: "http://localhost:1337/",
type: "GET",
dataType: "json",
data: { },
contentType: "application/json",
cache: false,
timeout: 5000,
success: function(data) {
alert(data);
},
error: function(jqXHR, textStatus, errorThrown) {
alert('error ' + textStatus + " " + errorThrown);
}
});
如您所见,我的 node.js 服务器在 http://localhost:1337/ 上运行。结果什么都没有返回,它抛出了一个错误。
有没有办法解决这个问题?
谢谢
本
【问题讨论】:
-
我理解你的问题的方式是,你从 localhost:8888 加载一个网页,然后对 localhost:1337 进行 $.ajax 调用。那是对的吗?如果是这样,那么您将使用相同的来源政策。
-
没错。所以解决这个问题的唯一方法是在 node.js 服务器上运行我的网站,使其具有相同的端口?但是,如果我在托管在端口 80 上的网站上直播,并且我想连接到 node.js 服务器以发出诸如搜索之类的请求,该怎么办?大多数人是怎么做到的?
-
首选方法(恕我直言)是使用反向代理,使所有请求都转到相同的主机/端口并在后台重新路由它们。一个不常见的解决方法是使用 JSONP,但我个人不喜欢它,因为它涉及安全问题。
-
正如@BarendGarvelink 提到的,您应该在这种情况下使用反向代理。