2015-12-04 48 views
0
//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(); 
     }); 
    }); 
} 
+0

当然,请删除授权标题。此外,访问控制标头不属于客户端。 –

+0

是的,我知道了。但事情是这是一个将数据推送到其他机器的angularjs应用程序构建。{instances}。每次访问这些机器时,都需要发送ins.name和ins.url.that 。为了推送data.so授权是必需的。如果有那些部件我仍然可以覆盖预检安全功能? –

回答

0

删除预检要求的CORS规范要求浏览器以预检请求与如有自定义页眉都在十字架上的原点请求指定的选项要求。并且,在执行OPTIONS预检时,它不包含您的自定义标题,因为OPTIONS请求的部分内容是找出允许在请求中发送自定义标题的部分。因此,如果服务器希望在浏览器中工作,则不应在OPTIONS请求上要求自定义标头。

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

相关问题