【问题标题】:CORS issue Angular + PHP REST APICORS 问题 Angular + PHP REST API
【发布时间】: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 的建议对解决方案的帮助

标签: php angular cors


【解决方案1】:

预检请求是一个 OPTIONS 请求。

您发送http_response_code(503); 以响应所有非 POST 请求。

预检需要 200 OK。

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 2016-12-15
    • 2019-05-22
    • 2018-03-01
    • 2020-07-21
    • 2019-02-18
    • 2020-09-11
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多