Angular 6 HttpClient и PHP error Http error response для (неизвестный URL): 0 неизвестная ошибка

У меня есть следующие службы аутентификации и входа в Angular 6:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})

export class AuthApiService {
public credentials:any=[];
constructor(private http: HttpClient) { }


login(username, password)
{
let headerOptions = new HttpHeaders();
headerOptions.append('Content-Type', 'application/json');
headerOptions.append("authorization", "basic aGM0YXBwOmHjddP5NjU=");
let test = {user: username, pass: password};
this.credentials = JSON.stringify(test);
console.log("hi "+ this.credentials);
return this.http.post('https://127.0.0.1/api/scripts/login.php', this.credentials, {
headers: headerOptions
}).pipe(map(
res=>{
console.log(res)
},
err=>
console.log(err)
))
}
}

И когда я нажимаю кнопку входа в систему:

a id="btn-login"  (click)="login()" class="btn btn-success">Login </a>

Функция в login.component.ts будет выполнять функцию входа в систему службы аутентификации:

login(){
this.auth.login("a", "p").subscribe(
(data)=>{
console.log(data)
},
(error)=>{
console.log(error)
}
)
}

В php и для URL я запускаю его в браузере и вижу результат правильно 1, но на консоли возникает ошибка, когда я нажимаю на кнопку:

«Http error response (неизвестный URL): 0 неизвестная ошибка»

введите описание изображения здесь

На вкладке сети:

введите описание изображения здесь

PHP-скрипт:

Начнем с основного класса:

<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
header('Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS');
header('Access-Control-Allow-Headers: *');

error_reporting(E_ALL);

class api {
private $username ="...";
private $password ="...";
private $db="...";
private $host = "...";

public $conn;

//Connection

public function connection(){
try{
$this->conn = new PDO("mysql:host=$this->host;dbname=$this->db", $this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->conn->exec("SET CHARACTER SET utf8");

return $this->conn;
}
catch(PDOException $e){
return $e->getMessage();
}

}

//Login

public function login($conn, $user){
$login = "SELECT username FROM login WHERE username=:user LIMIT 1";
$execLogin = $this->conn->prepare($login);
$execLogin->bindValue(":user", $user);
$execLogin->execute();
$res = $execLogin->rowCount();

return $res;
// if($res>0)
// {
//     return json_encode($res);
// }
// else{
//     echo 0;
// }
}

}

?>

И тогда, функция входа в систему выполняется (https://127.0.0.1/api/scripts/login.php):

<?php
header('Content-Type: application/json');

require_once('../api.php');

//Getting username and password from Ionic
$user="brital";
$pass = json_decode($_POST['credentials']);

$newApi = new api();
$conn = $newApi->connection();
$res = $newApi->login($conn, $user);
echo $res;
?>

1

Решение

Похоже, вы используете https, и я предполагаю, что это самозаверяющий сертификат? Тогда это, вероятно, та же проблема, что и здесь: угловой и самозаверяющий сертификат SSL — ERR_INSECURE_RESPONSE

У «0 Unknown Error» Ionic / Angular может быть много причин. Как упоминалось в другом комментарии, это может быть проблема с CORS, но, похоже, вы уже правильно настраиваете заголовки.

Вы можете подтвердить, что это проблема с сертификатом, просмотрев URL (в вашем случае «https://127.0.0.1/api/scripts/login.php«) непосредственно в Chrome. Появляется ли ошибка» NET :: ERR_CERT_AUTHORITY_INVALID «?

Решение (временное) указано в ссылке: перейдите к небезопасному варианту, поэтому Chrome не забудет принять ваш собственный сертификат. Конечно, правильно использовать настоящий сертификат.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]