Соединение Angular с PHP - PullRequest
       15

Соединение Angular с PHP

0 голосов
/ 26 октября 2019

То, что я пытаюсь сделать, это то, что у меня есть база данных MySQL на моем сервере Wamp, я смог подключиться к базе данных с помощью сценариев PHP, и она работает нормально. Я пытаюсь подключиться к нему через Angular и сталкиваюсь с ошибкой CORS. Я думаю, что причина ошибки в том, что я использую сервер Wamp?

<?php
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','');
define('DB_NAME','test');

function connect(){
    $connect = mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
    if(mysqli_connect_errno($connect)){
        die("Failed to connect");
    }
    mysqli_set_charset($connect,'utf8');
    return $connect;
}
$con = connect();

Вот файл PHP, используемый для получения из базы данных:

<?php
require 'index.php';
$students = [];
$sql = "SELECT category_id FROM category";
if($result = mysqli_query($con,$sql)){
    $cr = 0;
    while($row = mysqli_fetch_assoc($result)){
        $students[$cr]['category_id']=$row['category_id'];
        $cr++;
    }
   // print_r($students);
    echo json_encode($students);
}


?>

А вот мойслужба в Angular, которая использует httpClientModule:

import {HttpClient} from '@angular/common/http';
...
constructor(private http:HttpClient) { }
  getStudents(){
      return this.http.get<Students[]>('http://localhost/angularPHP/list.php');
  }

Я также импортировал HTTP-модуль КЛИЕНТА в app.module.ts

Ошибка кода, отображаемая в Angular:

Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса в http://localhost/angularPHP/list.php. (причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin').

# Remove the php extension from the filename
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

header('Access-Control-Allow-Origin: ' . ['http://localhost:4200']);
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');

Мой файл .htaccess был написан из-за онлайнового учебника, из-за которого ошибка не исчезла

...