只允许来自我的Chrome扩展的请求

我有一个NodeJS服务器与DigitalOcean上的Express配合使用。 我正在使用我的Chrome扩展程序进行GET调用。 它目前工作得很好,但我想收紧以下中间件的安全性:

// Add headers app.use(function (req, res, next) { // Website you wish to allow to connect res.setHeader('Access-Control-Allow-Origin', '*'); //todo: change this // Request methods you wish to allow res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); // Request headers you wish to allow res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); // Set to true if you need the website to include cookies in the requests sent // to the API (eg in case you use sessions) res.setHeader('Access-Control-Allow-Credentials', true); // Pass to next layer of middleware next(); }); 

问题是,我认为*access-control-allow-origin是让任何人打我的端点。 有没有办法只允许从我的Chrome扩展,而不是其他地方的电话?

在此先感谢,山姆

由于您的扩展程序将安装在具有不同IP地址的不同计算机上,因此无法阻止其他人访问您的服务器。 而且肯定不是用Access-Control-Allow-Origin头文件,因为它只能在浏览器环境和页面上下文中工作,而不能在扩展上下文中使用,这是由不同的机制来pipe理的。 任何可以通过HTTP进行通话的应用程序都能够访问您的服务器。 唯一可以做的是通过标题发送一些标识信息,然后您可以在服务器上validation请求是从您的扩展中发送并处理的。 否则,您可以在响应中返回503 Service Unavailable状态码。 当然,这个解决scheme可以解决,因为它意味着知道你的服务器确实存在并知道它的IP地址,然后也知道应该发送的头和值。