我使用[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中成功运行。
答案 0 :(得分:0)
您需要在服务器端设置标头而不是离子侧。
header(“Access-Control-Allow-Headers:X-Requested-With,Content-Type,Origin,Cache-Control,Pragma,Authorization,Accept,Accept-Encoding”);