2016-01-12 91 views
0

離子應用程序http post請求失敗,並給403?


 

 
    loginUser: function (name, pw) { 
 
      return $q(function (resolve, reject) { 
 
       var authdata = ' Basic ' + window.btoa(name + ':' + pw); 
 
    //encode Base64 
 
       var reqUrl = URL_CONSTANTS.baseUrl+'/login' 
 
       var methodType = 'POST' 
 
       var reqHeaders = { 
 
        'Authorization': authdata} 
 
       var reqData = {} 
 
    \t \t //request to proceed 
 
       var req = { 
 
       method: methodType, 
 
       url: reqUrl, 
 
       headers: reqHeaders, 
 
       data:reqData 
 
       } 
 
      //makes hit to the server and get's the response 
 
      $http(req).success(function (response, status, headers, config) { 
 
       $ionicPopup.alert({ 
 
        title: 'common success', 
 
        template: JSON.stringify(response) + " >> " + JSON.stringify(status)+ " >> " + JSON.stringify(headers) + " >> " + JSON.stringify(config) 
 
       }); 
 
       resolve(response); 
 
       }).error(function (error, status, headers, config) { 
 
       $ionicPopup.alert({ 
 
        title: 'error', 
 
        template: JSON.stringify(error) + " >> " + JSON.stringify(status)+ " >> " + JSON.stringify(headers) + " >> " + JSON.stringify(config) 
 
       }); 
 
       reject(error); 
 
       });    
 
      }); 
 
    } 
 
<button class="button button-block button-balanced" ng-click="loginUser('user','password')">Login</button>

我每次調用此方法獲取403,你能告訴我什麼是錯在我的代碼還是我失去了什麼,我已經使用了科爾多瓦白名單也,但它不是工作時間

這是響應的快照的,我是越來越http://i.stack.imgur.com/KRzLw.png

+0

你能爲這樣創造活生生的例子我可以檢查它。 –

+0

目前正在開展直播項目,所以我不能分享像URL這樣的更多細節。如果您提到可能發生此類錯誤的某些情況,那將會更有幫助。 –

+0

我上面的代碼工作正常,問題出在服務器端可能是CORS問題。 –

回答

2

只需添加下面的代碼在你的PHP後端服務器的鏈接

// Allow from any origin 
    if (isset($_SERVER['HTTP_ORIGIN'])) { 
     header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); 
     header('Access-Control-Allow-Credentials: true'); 
     header('Access-Control-Max-Age: 86400'); // cache for 1 day 
    } 
    // Access-Control headers are received during OPTIONS requests 
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { 
     if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) 
      header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); 
     if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) 
      header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); 
     exit(0); 
    }