本地主机拒绝来自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:
vshttp:
。 -
如果页面未从
localhost:8888
加载,而是从localhost:8888
其他端口加载,则由于端口号不同,所以不匹配。