#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 ОК для предполетной подготовки.