【问题标题】:Nodejs 限制对托管 Web 应用程序的 API 访问
【发布时间】:2022-01-20 19:29:38
【问题描述】:

我在域 admin.foo.com 下有一个托管的管理面板,在域 api.foo.com 下托管了 API

我有一个开放端点GET - api.foo.com/all-products。访问此资源不需要身份验证标头。但这只能通过托管的网络应用程序访问。

用户不应该能够复制这个 url 并粘贴到网络浏览器上并看到 json 响应,并且用户不应该能够通过另一个 API 或其他东西从这个端点获取数据。

这个问题已经在 StackOverflow 中提出,但给出的答案是由于 postmon 等强大的工具,这是不可能的。但这应该至少在一定程度上可以使用 Node.js 和 express.js 的特性来实现。

说检查请求来自哪里,然后像这样阻止资源。如何使用 Node.js、Express.js 实现这一目标?

【问题讨论】:

    标签: javascript node.js reactjs express vuejs2


    【解决方案1】:

    你要找的是cors

    const cors = require('cors');
    app.use(cors({
        origin: 'https://admin.foo.com'
    }));
    

    更多信息:https://www.section.io/engineering-education/how-to-use-cors-in-nodejs-with-express/

    【讨论】:

    • 可能最接近这个问题的答案。这将阻止其他站点从 API 请求数据,但不会阻止用户直接访问 api.foo.com 或阻止他们使用脚本访问该站点(我不相信这些是可能的——可能会阻止通过浏览器进行直接访问,但不会通过脚本进行 - 尽管身份验证有助于确保只有授权用户才能访问该站点)。
    猜你喜欢
    • 2016-07-18
    • 2017-07-19
    • 1970-01-01
    • 2016-01-04
    • 2017-09-23
    • 2021-08-15
    • 2017-08-09
    • 1970-01-01
    相关资源
    最近更新 更多