Hapijs + Angularjs cookie会话,正确的cors配置不起作用

时间:2015-07-21 01:40:59

标签: angularjs cookies cors hapijs

这是我在我的hapijs应用程序中的Cors配置:

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

我正在使用hapi-auth-cookie从angular.js前端的POST验证用户身份。一旦登录发生,我发送一个请求以获取项目列表,但项目的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);
                        });

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

我确实认为withCredentials已在配置中正确设置,我怀疑问题可能与其他内容有关。

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

您共享的Wrt代码,config正在扩展requestConfig对象(第904行)。因此,只要在请求配置中设置它就应该没问题。

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