• laravel 接口跨域


    最方便的方法,新建一个middleWare,把这个middleware加入到全局中间件,所有的请求,都会经过这个中间件的过滤。
    
    php artisan make:middleware CrossHttp
    然后就会在appHttpMiddlewareCrossHttp.php这个中间件,在handle方法里面添加如下代码:
    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');
            // $response->header('Access-Control-Allow-Credentials', 'true');
            return $response;
        }
    
    

           其中有以下需要注意的地方:

    • 对于跨域访问并需要伴随认证信息的请求,需要在 XMLHttpRequest 实例中指定 withCredentials 为 true。
    • 这个中间件你可以根据自己的需求进行构建,如果需要在请求中伴随认证信息(包含 cookie,session)那么你就需要指定 Access-Control-Allow-Credentials 为 true, 因为对于预请求来说如果你未指定该响应头,那么浏览器会直接忽略该响应。
    • 在响应中指定 Access-Control-Allow-Credentials 为 true 时,Access-Control-Allow-Origin 不能指定为 *(这个一定要注意,我就是在这个地方调了好久)
    • 后置中间件只有在正常响应时才会被追加响应头,而如果出现异常,这时响应是不会经过中间件的

    意思是允许所有的域都能访问这个接口。但是这时候不能传递session和cookie,如果想要指定域名来访问,就这样写:
    $response->header('Access-Control-Allow-Origin', 'http://mytest.com');
    这个意思就是只允许http://mytest.com来访问这个接口
    到这里还没完,中间件建立了,我们还要加到appHttpKernel.php里面去,不然不能生效。 
    这时候就有选择了,加到全局还是routeGroup?这个就取决于你的应用了,如果你的应用完全是接口,而且都是跨域,name就加到global那里去。如下图所示:
    如果你是某几个接口需要跨域,就写到下面那个routeMiddle里面去。
    然后用的时候就在路由里面加上这个中间件的别名即可。
    原文:https://blog.csdn.net/zhezhebie/article/details/78068009

    第二种方法:

    场景
    laravel作为后端API使用的时候,前端ajax请求的时候 遇到跨域的问题
    解决
    laravel5.5 barryvdh/laravel-cors 使用方法很简单
    composer require barryvdh/laravel-cors
    app/Http/Kernel.php 添加
    protected $middleware = [ BarryvdhCorsHandleCors::class];
    这时候ajax 访问就可以没有跨域的问题了
    ---------------------
    原文:https://blog.csdn.net/cominglately/article/details/80381567 

  • 相关阅读:
    java流程控制02Scanner进阶使用
    java流程控制01用户交互scanner
    java流程控制05Switch选择结构
    java基础10三元运算符
    CSDN的轮换广告JS
    如何在DataGrid中加入javascript以进行客户端的操作
    Json 的日期格式到.net datetime格式
    利用web.config设置用户不被锁定
    用csc.exe编译程序的例子
    严重关注食物安全
  • 原文地址:https://www.cnblogs.com/sgm4231/p/9838384.html
Copyright © 2020-2023  润新知