Проблема CORS с Angular PHP REST API

#php #angular #cors

Вопрос:

у меня возникли проблемы с CORS, но я добавил их на стороне сервера, что является моим api регистрации php, мой логин отлично работает без каких-либо проблем с cors, но регистр продолжает отклоняться, см. код ниже.

 <?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

//include CORS headers
header("Access-Control-Allow-Origin: *");
header("Access-Control-Max-Age: 3628800");
header("Access-Control-Allow-Methods: POST");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers,    Authorization, X-Requested-With");

//including files
include_once("../config/db.php");

include_once("../classes/Users.php");

//objects
$db = new Database();

$connection = $db->connect();

$user_obj = new Users($connection);

if($_SERVER['REQUEST_METHOD'] === 'POST'){
    $data = json_decode(file_get_contents("php://input"));

    if(!empty($data->name) amp;amp; !empty($data->email) amp;amp; !empty($data->password)){

        $user_obj->name = $data->name;
        $user_obj->email = $data->email;
        $user_obj->password = password_hash($data->password, PASSWORD_DEFAULT);

        $email_data = $user_obj->check_email();

        if(!empty($email_data)){
            //some data we have - insert should not go
            http_response_code(500);
            echo json_encode(array(
                "status" => 0,
                "error" => "User already exists, try another email address"
            ));
        }
        else{
            if($user_obj->create_user()){
                http_response_code(200);
                echo json_encode(array(
                    'status' => 1,
                    "message" => "User has been created"
                ));
            }
        }
    }
    else{
       http_response_code(500);
         echo json_encode(array(
            'status' => 0,
            "error" => "All data needed"
         ));
    }
}
else{
    http_response_code(503);
    echo json_encode(array(
        'status' => 0,
        "error" => "Access Denied"
    ));
}

?>
 

ниже приведен мой угловой сервис, который вызывает api

 import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class JarwisService {

  private baseUrl = 'https://domain.co.za/Backend/endpoints';

  constructor(
    private http: HttpClient,
  ) { }

  signup(data: any){
    return this.http.post(`${this.baseUrl}/signup.php`, data);
  }

  login(data: any){
    return this.http.post(`${this.baseUrl}/login.php`, data)
  }
}
 

Может ли кто-нибудь помочь мне понять, чего мне может не хватать, api регистрирует пользователя l тест с помощью почтальона(я знаю, что почтальон не использует CORS)

грань ошибки l находится ниже

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

Комментарии:

1. Почему вы даете клиенту разрешение на отправку Access-Control-Allow-Headers заголовка запроса? Это заголовок ответа. Он никогда не должен появляться в запросе. Ваш код на стороне клиента, похоже, также не отправляет Authorization заголовки или X-Requested-With заголовки, так зачем предоставлять для них разрешение?

2. спасибо за помощь, а также в сочетании с предложением @Quentin оба помогают в решении

Ответ №1:

Предполетный запрос-это запрос ОПЦИЙ.

Вы отправляете http_response_code(503); в ответ все, что не является почтовым запросом.

Вам нужно 200 ОК для предполетной подготовки.