Я создал приложение для регистрационной формы, используя [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);
}
?>
Вышеуказанный URL, упомянутый в getAllUsers()
работает в браузере, но при помещении его в приложение Ionic показывает ошибку ниже.
Блокирован перекрестный запрос: одна и та же политика происхождения запрещает чтение удаленного ресурса в http://haitutorial.com/HybridApp/listAllUsers.php. (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).
Вышеуказанный вопрос решается, когда я включить CORS дополнение в браузере. Но когда я запрещать CORS дополнение в браузере это показывает ошибка.
Аналогично, на странице вставки также преобладает та же ошибка. Когда я вставляю данные из приложения, они перенаправляются на страницу списка, и данные не отображаются, что говорит об указанной выше ошибке.
я добавил header()
в файле PHP также. Но я не могу отследить ошибку. Мне нужно исправить эту ошибку без использования надстроек, подобных материалам в браузере, и должен также успешно работать в приложении.
Вы должны установить заголовок на стороне сервера, а не на ионной стороне.
заголовок («Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding»);
Других решений пока нет …