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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 推特宣布永久停用特朗普个人账号

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 据央视新闻消息,当地时间1月8日晚,美国社交网站推特发布声明,称将永久停用美国总统特朗普的个人账号。 声明称,“在经…

    2021年6月25日
    84
  • linux zip 删除源文件,linux zip命令参数及用法详解–linux压缩zip文件命令[通俗易懂]

    linux zip 删除源文件,linux zip命令参数及用法详解–linux压缩zip文件命令[通俗易懂]linux命令的基本用法是:zip[参数][打包后的文件名][打包的目录路径]linuxzip命令参数列表:-a将文件转成ASCII模式-F尝试修复损坏的压缩文件-h显示帮助界面-m将文件压缩之后,删除源文件-n特定字符串不压缩具有特定字尾字符串的文件-o将压缩文件内的所有文件的最新变动时间设为压缩时候的时间-q安静模…

    2022年10月20日
    0
  • RDP漏洞_一啥后门

    RDP漏洞_一啥后门RDPshift后门漏洞在win7开机过程中,强制关闭计算机,再次开机会出现修复,点启动修复当它无法修复时会弹出下面的框发送和不发送,这里有查看问题详细信息的按钮点击该按钮可以看到有一些信息在信息最下面有个隐私声明的地址打开这个地址会看到是一个记事本文件,在记事本文件中有文件打开功能这样我们就进入看到了主机的所有文件,可以进行一些列的工作这里的D盘实际是主机的C盘此时它会有一个本地的记事本,可以通过它打开TXT文件。打开Windows->System32文件夹,在文件

    2022年9月18日
    0
  • phpmyadmin安装教程及配置设置

    phpmyadmin安装教程及配置设置.一般网上下载到的phpmyadmin是一个压缩包,我们将其释放到htdocs目录中,例如htdocs\phpmyadmin。  2.打开phpmyadmin目录,在此目录下是否有config.sample.inc.php文件,如果存在,那么将其改名为config.inc.php。(根据版本不同,有可能直接就有config.inc.php文件,那就无需改名,也有可能根本就没有config.

    2022年6月1日
    26
  • Web端即时聊天项目实现(基于WebSocket)

    Web端即时聊天项目实现(基于WebSocket)Web端即时聊天项目实现项目背景 其实这个项目算是我做过的花时间最长也投入心血最多的一个项目了,当时决定开始做这个的时候我几乎什么都不会,那时我个人的情况是:-JavaEE方面:会jsp+servlet,也简单使用过Struts,Spring仅仅只是听说过。-前端方面:html,css有一些基础,会使用Bootstrap前端工具开发集,js基本不了解。-数据库…

    2022年5月14日
    53
  • 制作initramfs镜像_乌班图initramfs问题

    制作initramfs镜像_乌班图initramfs问题Initramfs的制作和移植1.initramfsinitramfs在编译内核的同时被编译并与内核生成一个映像文件,可以压缩也可以不压缩,但是目前只支持cpio包格式。它是根文件系统制作和制作的一种非常简单的方法,也可以通过执行这个文件系统中的程序引导真正的文件系统,这样加载根文件系统的工作就不是内核的工作,而是initramfs的工作。由于initramfs使用cpio包格

    2022年8月11日
    6

发表回复

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

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