我正在创建一个Web应用程序,它从MYSQL数据库中获取信息并使用AngularJS和NodeJS在屏幕上显示。我已经设置了一个node.js服务器,它从数据库中提供JSON文件。如果我这样连接它就可以正常工作:192.168.1.57:8888这是我的家庭服务器ip或远程连接我的服务器并使用localhost:8888。这样做会在我的计算机上下载JSON文件。
然而。如果我使用javascript从服务器获取JSON文件,则会出现此错误:
GET http://localhost:8888/ net::ERR_CONNECTION_REFUSED
我尝试使用AngularJS和JQuery连接到服务器,它们都给出了相同的错误。我也尝试过127.0.0.1但这也没有用。我该怎么做才能解决它?或者我可以用更好的替代方式做到这一点吗?
这是node.js中的服务器代码
var http = require("http");
mysql = require("mysql");
var connection = mysql.createConnection({
user: "test",
password: "test",
database: "test"
});
http.createServer(function (request, response) {
request.on('end', function () {
connection.query('SELECT * FROM feedback;', function (error, rows, fields) {
response.writeHead(200, {
'Content-Type': 'x-application/json'
});
response.end(JSON.stringify(rows));
});
});
}).listen(8888);
这是angularJS中的客户端:
(function(){
var app = angular.module('question', [ ]);
app.controller("ServerController", [ '$http', function($http){
$http.get("http://localhost:8888").success(function(data,status,headers,config){
console.log("success");
}).error(function(data,status,headers,config){
console.log("error");
});
} ]);
}
)();
答案 0 :(得分:1)
猜测它,你正在遇到Same Origin Policy,这要求发出ajax请求的页面与它请求的资源(或者服务资源的服务器支持{ {3}}并允许页面的来源。
这可能会让你遇到两种不同的方式(我不知道哪个问题没有提供足够的信息):
如果浏览器代码在从文件系统加载的页面中运行,而不是通过HTTP运行,则它是跨源请求,因为协议不匹配({{1 }}与file:
)。
如果页面尚未从http:
加载,而是从localhost:8888
上的某个其他端口加载,则原点不匹配,因为端口号不同。