我正在使用 AngularJS 编写一个网站,它与服务器上的 API 进行通信并提供一些信息。
对于登录部分,我应该发送一个包含电子邮件、密码等的 http post 请求。它在 google Chrome 和 IE 上运行良好。我的意思是它发送帖子请求并获取令牌。但在 FireFox 中,当我检查网络时,它发送了一个 OPTION 请求并获得 200,但之后它不发送任何帖子!因此我的登录信息不会消失,也不会获得任何令牌。
对于这种情况我该怎么办?
应用程序配置:
$httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8;';
$httpProvider.interceptors.push('httpRequestInterceptor');
发送请求的服务中的函数:
this.loginEmail = function(f_email, f_pass, deviceModel, deviceOs) {
var data = $.param({
email: f_email,
password: f_pass,
device_model: deviceModel,
device_os: deviceOs
});
return $http({
method: "POST",
url: app.baseUrl + 'login_email/' + app.storeID + '/' + app.device_id,
data: data
}).success(function(response){
return response.status;
});
/*return $http.post(app.baseUrl + 'login_email/' + app.storeID + '/' + app.device_id, data).success(function(response){
return response.status;
}).error(function(response){
return response.status;
});*/
};
服务器凭证真实
CORS 看起来不错,因为我可以获取请求
编辑:
这是可能与此问题相关的另一件事:
在 Chrome 中,当我登录获取请求时,它会发送 Token 标头
但对于 Post 来说则不然
httpRequest拦截器:
app.factory('httpRequestInterceptor', function ($cookieStore) {
return {
request: function (config) {
config.headers['Authorization'] = $cookieStore.get('Auth-Key');;
config.headers['Accept'] = 'application/json;odata=verbose';
return config;
}
};
});