2015-07-21 109 views
2

這裏Hapijs + Angularjs的Cookie會話是我hapijs App我一個Cors配置:用正確的CORS配置不工作

"connections": [ 
     { 
      "port": 8067, 
      "routes": { 
       "cors": { 
        "credentials": true, 
        "origin": ["*"] 
       } 
      } 
     } 
    ], 

我使用hapi-auth-cookie從POST用戶從一個angular.js前置式身份驗證結束。一旦登錄情況發生,我出發送請求獲得的項目清單,但對於項目的GET請求返回一個401

這裏是我的角度設置:

$http.get('http://localhost:8067/projects', {withCredentials: true}) 
         .success(function(data) { 
          deferred.resolve(data); 
         }).error(function(data,status,error,config){ 
          deferred.reject(data); 
         }); 

回答

1

這似乎有一些問題與角$http模塊(請參閱:https://github.com/angular/angular.js/blob/master/src/ng/http.js#L929-L931)如果您在withCredentials傳遞到$http.get('url_here', config)(呼叫的配置部分),它永遠不會被設置。

相反,爲了解決這個問題,只需使用此代碼:$http.defaults.withCredentials = true;

+0

好調查@dennismonsewicz我想知道,如果你有任何意見:http://stackoverflow.com/questions/43748102/are-xhr-cookies-more-secure-than-normal-cookies謝謝你如果你這樣做,就會提前。 – AJP

0

它看起來對我來說,withCredentials在配置得到正確設置,我懷疑這個問題可能有其他事情做。您已共享

http://plnkr.co/edit/KACel8uVOuYnNTH9izuu?p=preview

WRT代碼,配置爲延伸的requestConfig對象(線:904)。所以只要它在請求配置中設置它應該沒問題。

var config = extend({ 
    method: 'get', 
    transformRequest: defaults.transformRequest, 
    transformResponse: defaults.transformResponse, 
    paramSerializer: defaults.paramSerializer 
    }, requestConfig); 
+0

我試過了,但由於某種原因它傳遞與請求沒有工作。 – dennismonsewicz

+0

是的,不知道這個問題,但我不認爲下面的修復可能是正確的。它是一個艱難的,但如果你可以在一個龐然大物繁殖,這將是有益的。 – Bharat