我有一个用node.js和express.js构建的Web应用程序。此应用程序呈现页面(假设[host]/homepage
),但也有一些API端点(假设[host]/api/getinfo
)。
Web应用将面向公众,但我希望 API 终结点只能通过 Web 应用的呈现页面中的 AJAX 调用进行调用。所以在这个例子中,任何人都可以访问[host]/homepage
,它呈现一个页面(在某些用户输入后)发出 AJAX 请求[host]/api/getinfo
,但人们不应该能够直接查询[host]/api/getinfo
(从他们的浏览器/邮递员/其他)
实现这一目标的最佳方法是什么?
我尝试了一个简单的中间件来检查req.get('origin')
,但这很容易被欺骗。
我怀疑这个问题有一个明显的答案,基于我对CORS的有限理解,我错过了。
感谢所有发表评论的人。基本答案是:这是不可能的。
如果不是来自允许的网站或来源,如何拒绝 http/https 请求解释了原因
如何阻止其他网页从我的服务器下载媒体?提供了一个适用于一部分情况的解决方案。