本地主机拒绝来自Javascript的连接

我正在制作一个Web应用程序,它从MYSQL数据库获取信息,并使用AngularJS和NodeJS将其显示在屏幕上。 我已经build立了一个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"); }); } ]); } )(); 

猜测一下,你会遇到同源策略 ,它要求使得ajax请求的页面和它所请求的资源在同一个源(或者服务该资源的服务器支持CORS并且允许页面的起源)。

两种不同的方法可能会打你(我不知道是哪一个,这个问题没有提供足够的信息):

  • 如果浏览器代码运行在从文件系统加载的页面中,而不是通过HTTP,那么这是一个跨源请求,因为协议不匹配( file: vs http:

  • 如果页面未从localhost:8888加载,而是从localhost:8888其他端口加载,则由于端口号不同,所以不匹配。