我希望能够只让来自特定域的请求成功地通过heroku上的节点应用程序提供服务。
我尝试的代码是
app.use((req, res, next) => {
if (req.hostname === "example.com") {
next();
}
});
原来req.hostname似乎是我的heroku appserver的名字......我已经查看了req
对象的快速文档,但没有看到其他任何有希望的东西。
(我看到IP是一种可能性,但流量来自的IP情况会不时发生变化,我不在循环中。)
我觉得请求的范围必须在某个地方...但也许我想要的东西是不可能的。
答案 0 :(得分:2)
accept a request from example.com
是你搞砸事情的地方。该请求不是来自example.com。该请求来自某个显示他们从example.com获得的网页的个人计算机。互联网上的任何人都可以加载和运行相同的网页。
身份验证通常是限制谁可以访问内容的方式。您需要用户输入某种形式的凭证。您可以通过客户端IP限制访问(具有各种限制),但您已经表明您认为这不会起作用。
限制谁可以访问您的服务器功能的常用方案是:
仅供参考,只要您的服务器不允许跨源请求(默认情况下不会这样),那么其他一些网站就无法通过浏览器访问您的服务器(浏览器会阻止它)。但是,任何脚本迷或黑客仍然可以。只有身份验证或IP过滤才能阻止黑客访问您的服务。