【发布时间】:2021-09-19 03:15:26
【问题描述】:
我遇到了 CORS 问题,但我已将它们添加到服务器端,这是我的 php register api,我的登录工作完美,没有任何 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) && !empty($data->email) && !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 的 Angular 服务
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脸在下面
【问题讨论】:
-
你为什么要给客户端发送
Access-Control-Allow-Headers请求头的权限?这是一个响应头。它不应该出现在请求中。您的客户端代码似乎也没有发送Authorization或X-Requested-With标头,那么为什么要授予它们权限呢? -
感谢您的帮助以及结合@Quentin 的建议对解决方案的帮助