标题还是什么?

时间:2017-03-14 02:22:01

标签: angularjs http-post

对预检请求的响应未通过访问控制检查:请求的资源上没有“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'标头。”..

温暖的回归..感谢您的帮助或建议

1 个答案:

答案 0 :(得分:0)

javascript向其他域发送请求时,浏览器会抛出此错误。

要在开发过程中暂时解决此问题,您可以使用chrome extension来取消浏览器警告。

对于生产环境,如果您的JavaScript与API服务器的域名不同,则需要在API服务器上将您的JavaScript域列入白名单。

服务器上使用的不同语言有不同的允许方式,谷歌[language] CORS会为您提供一些示例。要允许的域名必须与错误消息中的URL匹配,包括协议http/https以及是否存在尾部斜杠。

注意:建议不要使用*,除非您的API是公共用户要求的。