zoukankan      html  css  js  c++  java
  • laravel7.0 Laravel-cors 开发包实现跨域

    Laravel 7.0 跨域解决方案

    注意:laravel 7.0 是默认带有 fruitcake/laravel-cors 开发包

    1. 根据自己所需自定义 header 头 config/cors.php

        <?php
        return [
            'paths' => ['api/*'],
            'allowed_methods' => ['*'],
            'allowed_origins' => ['*'],
            'allowed_origins_patterns' => ['*'],
            'allowed_headers' => ['*'],
            'exposed_headers' => false,
            'max_age' => false,
            'supports_credentials' => false,
    ];
    

    2. 添加 HandleCors 中间件到 app/Http/Kernel.php 允许所有 api 跨域,

    protected $middleware = [
     ...
        FruitcakeCorsHandleCors::class,
    ];
    

    在 $routeMiddleware 属性中添加:

    protected $routeMiddleware = [
      ...
        'cors' => FruitcakeCorsHandleCors::class,
    ]
    

    在 config/app.php 中到 providers 里添加服务提供者:

    'providers' => [
      ...
        FruitcakeCorsCorsServiceProvider::class,
    ]
    

    在 routes/api.php 中添加路由以及 cors 中间件:

        Route::middleware('cors')->group(function (){
        Route::get('article', function(){
            return response()->json('跨域成功!',200);
        });
    });
    

    laravel 7.0 之前解决跨域方案

    第一步:创建中间件

    php artisan make:middleware EnableCrossRequestMiddleware

    第二步:编辑中间件 app/Http/Middleware/EnableCrossRequestMiddleware.php

    <?php 
    namespace AppHttpMiddleware;
    use Closure;
    class EnableCrossRequestMiddleware{
        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);
    
        }
    }
    

    第三步:注册中间件(全局)app/Http/Kernel.php

    <?php
    
    namespace AppHttp;
    
    use IlluminateFoundationHttpKernel as HttpKernel;
    
    class Kernel extends HttpKernel
    {
    
        protected $middleware = [
        ...
        AppHttpMiddlewareEnableCrossRequestMiddleware::class,
        ];
    
  • 相关阅读:
    Linux 下升级python和安装pip
    All of Me
    MangataのACM模板
    HDU1517 A Multiplication Game (博弈论+思维)
    Home_W的握手问题(思维+打表)
    Home_W的几何题 (计算几何)
    stone (组合数学 + Lucas定理)
    随笔分类
    HDU 5586 Sum (预处理 + 动态规划)
    POJ2104 K-th Number (平方分割 + 二分)
  • 原文地址:https://www.cnblogs.com/caibaotimes/p/13857751.html
Copyright © 2011-2022 走看看