Laravel6.X 跨域问题解决方案

简要说明:新项目比较小,所以尝试了 6.0 版本的 Laravel 框架。之前的项目用的是 barryvdh/laravel-cors 这个包,但是目前不支持 6.X 系统的,所以贴出这个项目的解决方案。

自定义中间件#

第一步:创建中间件#
php artisan make:middleware EnableCrossRequestMiddleware
第二步:编辑中间件#
<?php
namespace App\Http\Middleware;
use Closure;
class EnableCrossRequestMiddleware{
    /**
     * @param $request
     * @param Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        header('Content-Type: text/html;charset=utf-8');
        header('Access-Control-Allow-Origin:*');
        header('Access-Control-Allow-Methods:POST,GET,PUT,OPTIONS,DELETE'); // 允许请求的类型
        header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies
        header('Access-Control-Allow-Headers: Content-Type,Access-Control-Allow-Origin,Access-token,Content-Length,Accept-Encoding,X-Requested-with, Origin,Access-Control-Allow-Methods'); // 设置允许自定义请求头的字段

        return $next($request);

    }
}
第三步:注册中间件(全局)#
<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
      //other
        \App\Http\Middleware\EnableCrossRequestMiddleware::class,
    ];
本作品采用《CC 协议》,转载必须注明作者和本文链接
空舟湖上~      ——Jouzeyu
附言 1  ·  5年前

好吧,可能是我安装的版本有误,大家就当这是一个简单的自定义跨域吧,哈哈

lochpure
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

是支持的哦

5年前 评论
Fringe 5年前
$response=$next($request);
$headers = [
    "Content-Type" => "text/html;charset=utf-8"
];
return $response->withHeaders($headers);
5年前 评论

为什么不在 nginx 中解决……

5年前 评论
eanBear 5年前
Tricker (作者) 5年前

composer require barryvdh/laravel-cors (他不香嘛?)

5年前 评论

不是不支持,是 namespace 换了

4年前 评论