Ionic App无法在Mobile中运行但在浏览器中工作

时间:2018-02-10 09:28:59

标签: php web-services http-headers ionic3 httpservice

我使用[Ionic + PHP]为注册表创建了一个应用程序,我面临以下问题。

CORS加载项:已激活 - 我在http://localhost:8100/ionic-lab中使用它时工作正常 CORS加载项:已停用 - 当我在http://localhost:8100/ionic-lab中使用它时,它无法正常工作,并且出现下面提到的错误。

下面我将解释我的文件中的代码。

远程service.ts

constructor(public http: Http) {
    this.headers = new Headers()
    this.headers.append('Content-Type', 'application/json')
    this.headers.append('Content-Type', 'application/x-www-form-urlencoded')
    this.headers.append('Access-Control-Allow-Origin', 'http://localhost:8100')
    this.headers.append('Access-Control-Allow-Credentials', 'true')
    this.headers.append('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS, HEAD')
    this.headers.append('Access-Control-Allow-Origin', '*')
    this.headers.append('Accept', 'application/json')
    this.headers.append('Accept', 'application/x-www-form-urlencoded')
    console.log('Hello RemoteServiceProvider Provider');
  }

getAllUsers() {
    let options = new RequestOptions({ headers: this.headers })
    return this.http.get('http://haitutorial.com/HybridApp/listAllUsers.php', options)
      .map(res => res.json());
  }

getAllUsers() - 此函数将获取从特定URL注册的所有用户。

database.php中

<?php
include('database.php');
header('Access-Control-Allow-Origin' , '*');
header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT');
header('Accept','application/json');
header('content-type','application/json');
$query = "SELECT * FROM `users` WHERE `status`='1' AND `delete_status`='0' ORDER BY `user_id` DESC";
$result = mysqli_query($con,$query);
$count = mysqli_num_rows($result);
$resultant_array = array();
if($count>0)
{
    while($informations = mysqli_fetch_assoc($result))
    {
        $resultant_array[] = $informations;
    }
    print_r(json_encode($resultant_array));
}
else
{
$resultant_array[] = ["success"=> 200, "message"=> "No Data Found", "status_code"=>1 ];
echo $output = json_encode($resultant_array);   
}
?>

getAllUsers()中提到的上述网址在浏览器中有效,但当放入Ionic App时,会显示以下错误。

  

阻止跨源请求:同源策略禁止在http://haitutorial.com/HybridApp/listAllUsers.php读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。

当我在浏览器中启用 CORS插件时,上述问题就解决了。但是当我在浏览器中禁用 CORS插件时,会显示错误

同样,在插入页面中也存在相同的错误。当我从APP插入数据时,它会重定向到列表页面,并且不显示数据,告诉上述错误。

我在PHP文件中也添加了header()。但我无法追查错误。我需要修复此错误而不使用浏览器中的附加组件,并且需要在APP中成功运行。

1 个答案:

答案 0 :(得分:0)

您需要在服务器端设置标头而不是离子侧。

header(“Access-Control-Allow-Headers:X-Requested-With,Content-Type,Origin,Cache-Control,Pragma,Authorization,Accept,Accept-Encoding”);