任何人都可以告诉我如何从这个$ http标题中删除预检请求

时间:2015-12-04 06:30:28

标签: javascript angularjs

    //individual logins
    $rootScope.setting.instances.forEach(function(ins) {

        var header = { 
                    "Accept": "application/json",
                    "Authorization": "Basic " + btoa( ins.uname + ':' + ins.pword ),
                    "Access-Control-Allow-Origin" : "*",
                    "Access-Control-Allow-Methods" : "GET, POST, DELETE, PUT, JSONP"

                };      

         $http({ method : 'post', url : ins.url, headers: header })
         .success( function( data )
         {
            console.log( ins.name +" login success" );
            $("#fail" + ins.id ).hide();
            $("#succ" + ins.id ).show();
            //logins : a global variable declared in app.js
            logins.push('{"ins" : '+ ins.id + ',"isAvailable" : "true"}');
            checkFinished();
         })
         .error( function( data)
         {
            console.log( ins.name +" login failed" );
            $("#fail" + ins.id ).show();
            $("#succ" + ins.id ).hide();
            //logins : a global variable declared in app.js
            logins.push('{"ins" : '+ ins.id + ',"isAvailable" : "false"}');
            checkFinished();
         });
    });
}

1 个答案:

答案 0 :(得分:0)

如果在跨源请求中指定了任何自定义标头,则CORS规范要求浏览器使用OPTIONS请求预检请求。并且,当它执行OPTIONS预检时,它不包括您的自定义标头,因为OPTIONS请求的一部分是找出允许在请求上发送的自定义标头。因此,如果服务器希望从浏览器开始工作,则不应在OPTIONS请求中要求自定义标头。

因此,如果您不希望它使用OPTIONS请求进行预检,那么您必须不在请求中使用自定义标头。