从angularjs访问我网站的nodejs Express API
Accessing nodejs Express API of my website from angularjs
我需要为我的网站开发一个混合应用程序,使用ionic for UI,我正在使用node js创建APi。问题是我可以通过浏览器访问API,如果我从angularjs调用同一个API,我无法检索响应。这是节点js端的代码:
var app = require('express')();
var http = require('http').Server(app);
var mysql = require('mysql');
var bodyParser = require("body-parser");
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database : 'student',
});
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.get('/stud',function(req,res){
connection.query("SELECT * from stu_details",function(err, rows, fields){
if (err) throw err;
res.contentType('application/json');
console.log("entered");
res.send(JSON.stringify(rows));
res.end();
});
});
angularjs:处的代码
var app1 = angular.module('starter', ['ionic']);
app1.controller('mycontrl',function($scope,$http){
$http.get("http://127.0.0.1:3000/stud")
.then(function(response) {
$scope.names = response.body;
})
});
问题是,在角度侧,它没有进入"然后"函数;即响应不成功。但如果我从浏览器中调用,我可以获取身体部位。
这是因为你的应用程序在不同的端口上运行。可能是8100
,而你的express应用程序在3000
上运行。该请求是一个跨域ajax请求。有几种方法可以解决这个问题。
-
使用Ionic本身为您的API创建代理推荐
将
ionic.project
文件添加或编辑到您的项目并配置它:{ "name": "your-app", "app_id": "", "proxies": [ { "path": "/stud", "proxyUrl": "http://127.0.0.1:3000/stud" } ] }
然后,您可以在您的应用程序上正常请求
/stud
,Ionic将代理该请求到您的快递应用程序。您可以将这些规则中的更多规则添加到上面的数组中。在这里和这里了解更多信息。
-
在您的快递应用程序中启用跨来源资源共享(CORS)。
你可以在这个帖子上找到如何做到这一点。
-
在浏览器上安装扩展以允许CORS,但我不建议这样做,因为这可能会导致访问其他网站的问题。
此外,如果您正在使用这种体系结构,出于安全原因,您可能会在API上使用https
。
在服务器端添加以下模块后,问题就解决了。
var cors=require('cors');
app.use(cors());
相关文章:
- nodejs/express包含本地js文件
- 将路由处理程序委托给NodeJS+Express中的其他模块
- NodeJS Express中的分页方法
- AngularJS路由服务器端支持(NodeJS+express)
- 简单的单元测试 nodeJS/Express
- NodeJS + Express 404 在基本路由上
- nodejs/express获取发布的数据
- Nodejs Express 4 Routing Questin
- 使用nodejs/express时出现意外的换行符
- 如何使用 NodeJS Express 服务器在 HTML 中包含 JS 文件
- 在nodejs (express/http)中获取url的响应
- NodeJS express - 无法获取路由
- Nodejs - Express JSON 解析器无法响应
- 如何通过Postman将JSON发送到NodeJS Express Server
- 如何将 EmberJS 前端与 NodeJS Express API 连接
- NginX 代理 Nodejs/Express - 静态文件上的 404
- 在 nodejs Express app 中的链接中发送 DELETE 请求
- Nodejs Express - methodOverride 不适用于多部分/表单数据
- nodejs express mongoose connect to db error
- NodeJS Express 中的异步操作