1.新建一个中间件
php artisan make:middleware CrossHttpMiddleware
2.编辑中间件内容
- 指定单个网址跨域
<?php
namespace App\Http\Middleware;
use Closure;
class CrossHttpMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// 单个跨域
$response = $next($request);
$origin = $request->server('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : '';
$allow_origin = [
'http://localhost:8878'
];
if (in_array($origin, $allow_origin)) {
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN');
header('Access-Control-Expose-Headers: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Credentials: true');
}
return $response;
}
}
$allow_origin
数组变量是你允许跨域的列表了,可自行修改。
- 全部地址跨域
<?php
namespace App\Http\Middleware;
use Closure;
class CrossHttpMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// 全部跨域
$response = $next($request);
$response->header('Access-Control-Allow-Origin', '*');
$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, Accept');
$response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
// 在响应中指定 Access-Control-Allow-Credentials 为 true 时,Access-Control-Allow-Origin 不能指定为 *
$response->header('Access-Control-Allow-Credentials', 'false');
return $response;
}
}
注意:根据自己的需求来选择单个跨域还是全部跨域
3.在内核文件注册该中间件
protected $middleware = [
// other
\App\Http\Middleware\CrossHttpMiddleware::class
];
在 app\Http\Kernel.php 中 的 $middleware 属性添加,这里注册的中间件属于 全局中间件
完成,然后在前端中发送请求已经可以了