laravel之跨域请求(二)「建议收藏」

laravel之跨域请求(二)「建议收藏」laravel之跨域请求(二)

大家好,又见面了,我是你们的朋友全栈君。

1,方法一:通过扩展包解决

扩展包地址:barryvdh/laravel-cors

(1)安装,项目根目录

composer require barryvdh/laravel-cors

Laravel 5.4 及以下版本需要手动在 config/app.php 中注册服务提供者:

Barryvdh\Cors\ServiceProvider::class,

(2)使用
全局使用的中间件,在app/Http/kernel.php 文件:

protected $middleware = [
    // ...
    \Barryvdh\Cors\HandleCors::class,
];

特定路由中应用 CORS

protected $middlewareGroups = [
    'web' => [
       // ...
    ],

    'api' => [
        // ...
        \Barryvdh\Cors\HandleCors::class,
    ],

(3)配置
自定义配置,laravel-cors 扩展包的配置文件发布到 config 目录下:

php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider" 

以下是该配置文件默认配置值(config/cors.php):

eturn [

    /* |-------------------------------------------------------------------------- | Laravel CORS |-------------------------------------------------------------------------- | | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*') | to accept any value. | */

    'supportsCredentials' => false,
    'allowedOrigins' => ['*'],
    'allowedOriginsPatterns' => [],
    'allowedHeaders' => ['*'],
    'allowedMethods' => ['*'],
    'exposedHeaders' => [],
    'maxAge' => 0,

];

以上步骤操作完,发起请求会报403错误,具体没找原因,知道小伙伴,可留言。
在这里插入图片描述
在这里插入图片描述
在gitHub上面找到了问题:

我使用的是 laravel 5.7 api + dingo + laravel-cors not work,需要在 config/app.php 中操注册服务提供者:

'providers' => [
	Barryvdh\Cors\ServiceProvider::class	
]

所以上面提到的laravel5.4<=版本需要添加,这个需要根据具体情况而定。

2,方法二:通过自定义中间件解决

1,新建一个中间件

php artisan make:middleware EnableCrossRequestMiddleware

2.CrossRequestMiddleware.php

?php
namespace App\Http\Middleware;
use Closure;
class CrossRequestMiddleware
{ 
   
    /** * 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,DELETE');
            $response->header('Access-Control-Allow-Credentials', 'true');
        }
        return $response;
    }
}

3,全局使用,注册该中间件

 protected $middleware = [
        // more
        App\Http\Middleware\CrossRequestMiddleware::class,
    ];
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105842.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python简介 「建议收藏」

    Python简介 「建议收藏」1,Python是一种计算机程序设计语言,Python是用来编写应用程序的高级编程语言。完成同一个任务,Python的代码量很少,但是代码少的代价是运行速度慢。2,问题:是不是越低级的程序越难学,

    2022年7月3日
    20
  • Java教学视频下载(全集)

    Java教学视频下载(全集)1:四百本Java电子书下载链接:http://www.verycd.com/topics/2784992/2:蓝点在线Java视频教程http://you.video.sina.com.cn/a/1905723-1393828897/1/2.html3:J2EEWeb程序开发定向班V1.0Java就业班V2.0(完整版)http://www.verycd.com/topics/…

    2022年5月15日
    39
  • no jump_jump out

    no jump_jump outCprovidesaformofuser-levelexceptionalcontrolflow,calledanonlocaljump,thattransferscontroldirectlyfromonefunctiontoanothercurrentlyexecutingfunctionwithouthavingtogothroug

    2022年9月6日
    2
  • 通过ActionContext获取request session application 以及ActionContext的简单解析「建议收藏」

    通过ActionContext获取request session application 以及ActionContext的简单解析「建议收藏」ActionContext:action的上下文对象。获取application://获取ActionContext对象是action的上下文对象ActionContextactionContext=ActionContext.getContext();//获取到application对应的map并且向其中添加一个属性Map<String,Obj…

    2022年9月9日
    0
  • 看美女好吗_你如何看待毛遂自荐这件事

    看美女好吗_你如何看待毛遂自荐这件事在这个高速发展世界,我们在物质需求满足的同时也注重精神需求的满足,而精神需求这个方面我大概总结了一下,分为三个小方面:1、健康的精神需求;2、亚健康的精神需求;3、不健康的精神需求。什么是健康的精神需求?什么又是不健康的精神需求?这些问题让人容易忽视,但是它却在我们生活中真实存在,而且也时常给我们生活带来一些困扰。我有一个朋友,喜欢看和收藏一些高清美女图片www.mangoxo.com但…

    2022年9月14日
    0
  • linux重启nginx服务_centos7重启服务器命令

    linux重启nginx服务_centos7重启服务器命令连接服务器输入以下命令,如果要重启其他服务把nginx替换即可。servicenginxrestart出现以下页面即为成功

    2022年8月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号