旗下导航:搜·么
当前位置:网站首页 > PHP框架 > Laravel > 正文

laravel 跨域解决方案【laravel框架】,laravel

作者:搜搜PHP网发布时间:2019-11-29分类:Laravel浏览:96


导读:我们在用laravel举行开辟的时刻,特别是前后端完整星散的时刻,由于前端项目运行在本身机械的指定端口(也多是其他人的机械),比方localhost:8000,而l...
我们在用 laravel 举行开辟的时刻,特别是前后端完整星散的时刻,由于前端项目运行在本身机械的指定端口(也多是其他人的机械) , 比方 localhost:8000 , 而 laravel 顺序又运行在另一个端口,如许就跨域了,而由于浏览器的同源战略,跨域要求是不法的。实在这个题目很好处理,只需要增加一个中间件就能够了。

1.新建一个中间件

php artisan make:middleware EnableCrossRequestMiddleware

2.誊写中间件内容

<?php
namespace App\Http\Middleware;
use Closure;
class EnableCrossRequestMiddleware
{
    /**
     * 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:8000',
        ];
        if (in_array($origin, $allow_origin)) {
            $response->header('Access-Control-Allow-Origin', $origin);
            $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN');
            $response->header('Access-Control-Expose-Headers', 'Authorization, authenticated');
            $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
            $response->header('Access-Control-Allow-Credentials', 'true');
        }
        return $response;
    }
}

$allow_origin 数组变量就是你许可跨域的列表了,可自行修正。

3.然后在内核文件注册该中间件

    protected $middleware = [
        // more
        App\Http\Middleware\EnableCrossRequestMiddleware::class,
    ];

在 App\Http\Kernel 类的 $middleware 属性增加,这里注册的中间件属于全局中间件。

然后你就会发明前端页面已能够发送跨域要求了。

会多出一次 method 为 options 的要求是一般的,由于浏览器要先推断该服务器是不是许可该跨域要求。

更多Laravel相干技术文章,请接见Laravel框架入门教程栏目举行进修!

以上就是laravel 跨域处理方案的细致内容,更多请关注ki4网别的相干文章!

标签:laravel