javascript - 如何限制API只在浏览器运行?

标签 javascript node.js express authentication mean-stack

我正在使用 node js 并且我设置了策略来限制 api 的准确性,而不是在浏览器中。为此我设置了以下条件

app.route('/students').all(policy.checkHeader).get(courses.list)

exports.checkHeader =  function(req, res, next) {
    var headers = req.headers;
       if ( headers['upgrade-insecure-requests'] || headers['postman-token']) {
        res.status(401).json('Page not found');
    } else {
        return next();
    }

}

我不确定我的过程是否正确。我正在搜索仅存在于浏览器的公共(public)参数(header-parameter)。任何人都可以帮助我。谢谢。

最佳答案

这是不可能的。

您无法控制哪些类型的客户端向您的 HTTP 服务器发出 HTTP 请求。

您无法可靠地确定哪种类型的客户发出了您收到的请求。

升级不安全请求 header 可以由任何自定义客户端发送(或不发送)任何值。同上 postman token 。同上用户代理。同上其他一切。

限制它的唯一方法是在请求中要求某种 secret 。如果你想让普通的网络浏览器访问它,那么这个 secret 就会通过浏览器开发者工具泄露。

关于javascript - 如何限制API只在浏览器运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43588012/

相关文章:

node.js - 如何在 nodejs 服务器中设置 HTTP Keep-Alive 超时

node.js - 在express中使用passport-ldapauth nodejs模块进行身份验证

javascript - Javascript 警报中的链接

javascript - 使用javascript调整按钮图像的大小

javascript - 在不中断循环的情况下中断事件循环处理

mongodb - Graphql 创建两个查询之间的关系。错误无法在初始化之前访问

angularjs - 平均堆栈 : angular routing vs express routing

javascript - 变量 $http 未定义

javascript - AngularJS/jQuery : changing text in span doesn't fire resize event

angularjs - 无法使用 Passport 基本身份验证来验证 $http