使用Angular 1.6拦截器保护标头或cookie

Ale*_*lls 12 javascript browser cookies http-headers angularjs

我有这个$ http请求拦截器

app.config(function($httpProvider) {
  $httpProvider.interceptors.push(function() {
    return {
      request: function(req) {
        // Set the `Authorization` header for every outgoing HTTP request
        req.headers['cdt_app_header'] = 'tamales';
        return req;
      }
    };
  });
});
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以为每个$ http请求添加标头或cookie,但是使用JavaScript保持标头值安全/不可见?

我们可以添加一个带有此标头的模糊层,以防止轻松访问我们的API端点,但我想知道一个更真实安全的解决方案.

Cookie用于安全会话,这些更安全,因为无法使用JavaScript访问它们.假设我们有一个用户可以使用前端代码执行此请求:

GET /api/users
Run Code Online (Sandbox Code Playgroud)

我们真的不希望他们能够使用cURL或浏览器发出简单的请求,而无需额外的信息.我们给他们的cookie将使他们能够使用浏览器地址栏向/ api/users发出GET请求,但是如果我们添加要求另外有一个cookie或标头,那么我们可以阻止他们访问端点以我们不希望他们使用的格式授权的.

换句话说,我们希望尽力为他们提供访问权限,但仅限于前端Angular应用程序的上下文.

小智 3

由于我的代表,我无法添加评论,但是您在后端做什么来授权用户?如果 cookie 已签名并包含用户权限,则标头在客户端中可见并不重要,因为它也会在后端 API 调用中进行验证。