2015-08-26 239 views
0

匿名模板負荷導致響應錯誤想檢查,我使用AngularJS 1.4.4與AngularUI。所以最近我升級了我的網站以使用JWT令牌。 JWT令牌通過http請求中的標頭髮送。所以,我還添加了一個攔截器攔截這樣Angularjs - 在攔截

request: function(config){ 
    config.headers = config.headers || {}; 
      if ($localStorage.jwtToken) { 
       config.headers.Authorization = 'Bearer ' + $localStorage.jwtToken; 
      } 
      return config; 
}, 
response: function(response) { 
    if(response.headers('New-Jwt-Token')){ 
    console.log(response.headers('New-Jwt-Token')); 
    } 
}, 
responseError: function (response) { 
    // handle the case where the user is not authenticated 
    if (response.status === 401) { 
    if(response.data.error === 'token_ttl_expired'){ 
     if(response.data.new_jwt_token){ 
     $localStorage['jwtToken'] = response.data.new_jwt_token; 
     console.log('jwt updated'); 
     } 
    } 
    } 
    return $q.reject(response); 
} 

向服務器發出角的所有請求我注意到是同時的角度提出的要求也有很多到不存在的路線正在取得匿名模板請求在我的網站導致整個程序停止工作。

enter image description here

我應該怎麼刪除/防止/加載刪除這些不必要的模板?

更新:如果發現這實際上是由AngularUI bootstrap引起的。 enter image description 1enter image description 2

我多麼應該避免這種由攔截器被攔截?

回答

1

你的錯誤是更可能通過不response是在response攔截返回引起的。所以它應該是:

response: function(response) { 
    if(response.headers('New-Jwt-Token')){ 
    console.log(response.headers('New-Jwt-Token')); 
    } 
    return response; 
}, 

攔截器將攔截所有請求AFAIK。需要注意的是與UI的引導,模板都在$templateCache所以沒有實際GET緩存實際發送到服務器。

這是完全沒有必要的,但你可以在你的請求攔截器做的是,如果在$templateCache發現什麼也不做。

request: function(config){ 
    if (config.url && $templateCache.get(config.url)) { 
     // Don't do anything 
     return config; 
    } 

    config.headers = config.headers || {}; 
    if ($localStorage.jwtToken) { 
     config.headers.Authorization = 'Bearer ' + $localStorage.jwtToken; 
    } 
    return config; 
}, 

再次,這是沒有必要的,沒有達到很多,但我把它放在這裏櫃面你在request攔截其他處理邏輯。