对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。
我的代码
.factory('AuthenticationService',
['Base64', '$http', '$cookieStore', '$rootScope', '$timeout',
function (Base64, $http, $cookieStore, $rootScope, $timeout) {
var service = {};
service.Login = function (UserName, Password, callback) {
/* Dummy authentication for testing, uses $timeout to simulate api call
----------------------------------------------
$timeout(function () {
var response = { success: UserName === 'test' && Password === 'test' };
if (!response.success) {
response.message = 'UserName or Password is incorrect';
}
callback(response);
}, 1000);
*/
/* Use this for real authentication
----------------------------------------------*/
$http({
method: 'POST',
url: 'http://216.0.1.209/AuthenticateUser',
data: {
UserName: 'UserName',
Password: 'Password'
},
headers: {
'content-type: multipart/form-data; boundary=---011000010111000001101001'
}
}).then(function(response) {
console.log(response)
});
};
service.SetCredentials = function (UserName, Password) {
var authdata = Base64.encode(UserName + ':' + Password);
$rootScope.globals = {
currentUser: {
UserName: UserName,
authdata: authdata
}
};
$http.defaults.headers.common['Authorization'] = 'Basic' + authdata; // jshint ignore:line
$cookieStore.put('globals', $rootScope.globals);
};
service.ClearCredentials = function () {
$rootScope.globals = {};
$cookieStore.remove('globals');
$http.defaults.headers.common.Authorization = 'Basic';
};
return service;
}])
在Chrome,Firefox和IE上测试,给出相同的结果“请求的资源上没有'Access-Control-Allow-Origin'标头。”..
温暖的回归..感谢您的帮助或建议
答案 0 :(得分:0)
当javascript
向其他域发送请求时,浏览器会抛出此错误。
要在开发过程中暂时解决此问题,您可以使用chrome extension来取消浏览器警告。
对于生产环境,如果您的JavaScript与API服务器的域名不同,则需要在API服务器上将您的JavaScript域列入白名单。
服务器上使用的不同语言有不同的允许方式,谷歌[language] CORS
会为您提供一些示例。要允许的域名必须与错误消息中的URL匹配,包括协议http/https
以及是否存在尾部斜杠。
注意:建议不要使用*
,除非您的API是公共用户要求的。