【问题标题】:How to make my API Private by using cors in angular fullstack generator?如何通过在角度全栈生成器中使用 cors 使我的 API 私有?
【发布时间】:2017-03-16 01:18:42
【问题描述】:

我正在为我的 web 应用程序使用 angular fullstack 生成器,我想让我的 api 成为私有的,这意味着应该只从我的域中提供响应。如果 api 是从不同的域使用的,它不应该提供响应。

为此,我使用了以下 npm 包https://www.npmjs.com/package/cors

我在我的项目中添加了以下代码。

'use strict';

var express = require('express');
var cors = require('cors');
var router = express.Router();
var app = express();

var corsOptions = {
  origin: 'http://example.com'
};

router.get('/', cors(corsOptions), function(req, res, next) {
  res.json({
    msg: 'This is CORS-enabled for only homefuly.com.'
  });
});

module.exports = router;

以上代码放在我的服务器->api->test->index.js

当我点击 api http://localhost:9000/api/test 时,我可以看到响应。如果我从 example.com 发出请求,我应该只得到响应,否则它应该抛出错误消息,请帮助实现这一点。

提前致谢。

【问题讨论】:

  • CORS 并没有像你想象的那样做。
  • 嘿凯文,请帮助我了解如何使用 cors 并实现我的要求。谢谢

标签: angularjs node.js express cors angular-fullstack


【解决方案1】:

我想让我的 api 成为私有的

Express 可以根据 IP 地址限制连接:

var express = require('express')
    , ipfilter = require('express-ipfilter').IpFilter
    , app = express.createServer()
    ;

// Whitelist the following IPs
var ips = ['127.0.0.1'];

// Create the server
app.use(ipfilter(ips, {mode: 'allow'}));
app.listen(3000);

有关详细信息,请参阅NPM express-ipfilter Package INFO

【讨论】:

  • 你好,谢谢你的帮助,是否有可能代替IP地址,有任何软件包可以让我使用域名?顺便说一下,我会尝试您提供的建议,谢谢。
  • 客户端到服务器的连接是使用 IP 地址完成的。 nodeJS DNS 模块有一个名为 .reverse 的方法,它使用 IP 地址获取主机名数组。
  • 嗨乔治,我在我的服务器上托管了我的项目,现在问题是当我请求我的网站时,它会转到我的外部 ip ->Nginx(127.0.0.1)->api 并且我得到了结果。当我将 127.0.0.1 列入白名单时,我只需在浏览器中输入 api GET 函数即可获得响应。请为我提供解决方案,以便解决我的问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
  • 2019-03-09
  • 2023-03-04
  • 2015-04-04
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多