【问题标题】:Ionic application http post request get fails and gives 403?离子应用程序http post请求获取失败并给出403?
【发布时间】:2016-04-16 16:59:44
【问题描述】:

   

     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 = {}
    		//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

【问题讨论】:

  • 你能创建一个活生生的例子,这样我就可以检查它了。
  • 目前正在进行现场项目,因此我无法分享更多详细信息,例如 URL。如果您提及可能发生此类错误的某些场景,将会更有帮助。
  • 我上面的代码工作正常,问题出在服务器端,可能是CORS问题。

标签: angularjs ionic-framework ionic


【解决方案1】:

只需在您的 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);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多