这是我尝试过的
中间件
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Credentials', 'true')
->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Authorization, X-Requested-With, Accept, X-Token-Auth, Application')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
API路线
Route::group(['middleware' => ['cors', 'auth:api']], function() {
Route::options('{any}');
Route::post('user/profile','UserController@profile');
Kernel.php
protected $routeMiddleware = [
'cors' => \App\Http\Middleware\Cors::class,
但仍然,我在另一个来源的API调用中遇到此错误。
对预检请求的响应未通过访问控制检查:否 请求中存在“ Access-Control-Allow-Origin”标头 资源。
有什么理由吗?
答案 0 :(得分:1)
最简单的解决方案 转到bootstrap文件夹并打开app.php文件。然后,只需将这些行添加到文件顶部即可。 app.php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Headers: *');
另一种解决方案:
php artisan make:middleware Cors
现在从App \ Http \ Middleware文件夹中打开Cors.php,并使用以下代码替换handle()函数:
Cors.php
public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE,
OPTIONS')
->header('Access-Control-Allow-Headers', 'Content-Type, Authorizations');
}
最后,从App \ Http文件夹中打开Kernel.php,将以下行添加到$ middleware数组中:
protected $middleware = [
...
\App\Http\Middleware\Cors::class,
];
现在运行该应用程序并从任何地方调用API。
教程已结束。谢谢。 ?
由MyNotePaper回答