Laravel CORS 策略已阻止从源访问 XMLHttpRequest

Laravel Access to XMLHttpRequest at from origin has been blocked by CORS policy

当我从 Angular 应用程序向 Laravel 发送呼叫时,出现以下问题

Access to XMLHttpRequest at 'http://localhost:8083/api/login_otp' from origin 'http://localhost:4200' has been blocked by CORS policy: Request header field ip is not allowed by Access-Control-Allow-Headers in preflight response.

我找到了解决方案并在 CROS.php

中进行了以下更改
public function handle($request, Closure $next)
    {
        return $next($request)
        ->header('Access-Control-Allow-Origin', '*') 
        ->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, DELETE, OPTIONS')
        ->header('Access-Control-Allow-Headers', 'Origin, Content-Type, X-Auth-Token, Authorization, X-Requested-With, x-xsrf-token');
    }

我在 Access-Control-Allow-Headers 中添加了 x-xsrf-token,但我仍然遇到同样的错误。

阅读错误信息:

Request header field ip is not allowed by Access-Control-Allow-Headers

它说 ip 是不允许的。

看看你的代码:

'Origin, Content-Type, X-Auth-Token, Authorization, X-Requested-With, x-xsrf-token'

您的代码没有提到 ip

ip 添加到允许的列表 headers。

首先,您需要在 routes/api.php 文件夹中定义所有 API 路径。在 api.php 文件夹中,您可以像下面这样定义路径:

Route::get("/", [AngularController::class, "index"]); --> Incorrect Laravel API path

那么你必须在 Angular 中设置基数 url:-

private url = 'http://local.new_practical.com/api/'; --> Incorrect Angular Base URL

这里需要注意的重要一点是angular中定义的url必须加上'http://'前缀。如果它已经存在,请不要像上面提到的 Laravel API 路径那样设置你的 api 路径。相反,请通过以下方式提及它:

Route::get("getEmployees", [AngularController::class, "index"]); --> Correct Laravel API path

因此,将 angular 中定义的基数 url 设置为:

private url = 'http://local.new_practical.com/api/getEmployees'; --> Correct Angular Base URL