【问题标题】:How to restrict API's to run only in the browser?如何限制 API 仅在浏览器中运行?
【发布时间】:2017-09-21 03:07:49
【问题描述】:

我正在使用节点 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();
    }

}

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

【问题讨论】:

    标签: javascript node.js express authentication mean-stack


    【解决方案1】:

    我认为没有身份验证/授权就不可能真正阻止请求。但是,您可以使用 HTTP Header 的 User-Agent 字段

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

    【讨论】:

      【解决方案2】:

      这是不可能的。

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

      您无法可靠地确定您收到的请求的类型。

      任何自定义客户端都可以发送(或不发送)带有任何值的 upgrade-insecure-requests 标头。同上邮递员令牌。同上用户代理。其他一切同上。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-28
        • 2020-05-09
        • 2019-01-23
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 2012-06-24
        • 2020-01-10
        相关资源
        最近更新 更多