Localhost拒绝来自Javascript的连接

时间:2015-01-30 11:22:47

标签: javascript mysql json node.js server

我正在创建一个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");
    });

} ]);
}
)();

1 个答案:

答案 0 :(得分:1)

猜测它,你正在遇到Same Origin Policy,这要求发出ajax请求的页面与它请求的资源(或者服务资源的服务器支持{ {3}}并允许页面的来源。

这可能会让你遇到两种不同的方式(我不知道哪个问题没有提供足够的信息):

  • 如果浏览器代码在从文件系统加载的页面中运行,而不是通过HTTP运行,则它是跨源请求,因为协议不匹配({{1 }}与file:)。

  • 如果页面尚未从http:加载,而是从localhost:8888上的某个其他端口加载,则原点不匹配,因为端口号不同。