Angular& CORS - 请求已取消

时间:2016-05-27 14:08:07

标签: angularjs cors

我遇到了一个奇怪的问题,我构建的应用程序使用Angular与支持CORS的API通信。网址类似于......

网站:www.mysite.com API:api.mysite.com

在我第一次访问该网站时,我被发送到登录页面。当我输入有效凭据并提交时,我在Chromes网络控制台中获得以下示例网络请求...

api.mysite.com/login    OPTIONS 200
www.mysite.com/?        GET     200
api.mysite.com/login    POST    (cancelled)

CORS预检选项请求成功,但登录的POST被取消。我怀疑两者之间的GET可能会导致这种情况,我不知道它来自哪里。我没有明确地发送它。 Angular可以这样做吗?

此请求失败,并重新显示登录表单。当我尝试使用相同的凭据再次登录时,它在第一次尝试后工作,并且控制台看起来像......

api.mysite.com/login    OPTIONS 200
api.mysite.com/login    POST    200

我使用Angular HTTP拦截器用API密钥装饰所有请求,我在提交之前检查了请求,并且在两个实例中请求看起来都相同(标题等...)。 它几乎就像第一次访问页面时没有初始化一样?!

---编辑--- 万一它有帮助,我的工厂做的请求看起来像......

// return request
return $http({
            url: url,
            method: "POST",
            withCredentials: true,
            headers: {
                'Authorization': 'Basic '+btoa(username+':'+password)
            }
        });
    },

我的拦截器......

request: function(config) {
        // if authenticated, include the JWT token for the user
        if(config.url.indexOf(API) === 0 && AuthFactory.isAuthenticated()) {
            config.headers.authorization = 'Bearer ' + AuthFactory.getToken();
        }
        return config;
    },

谢谢!

0 个答案:

没有答案