首页 > 其他分享 >跨域 - laravel

跨域 - laravel

时间:2023-09-20 14:47:07浏览次数:30  
标签:laravel Http 跨域 Middleware response Access Illuminate class

1、在app\Http\Middleware 下创建CrossHttp.php配置文件;(添加允许跨域的域名)

<?php
namespace App\Http\Middleware;
use Closure;
class CrossHttp
{
    /**
     * 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:3000',
            'http://localhost:5173'
        ];
        if (in_array($origin, $allow_origin)) {
            $response->header('Access-Control-Allow-Origin', $origin);
            $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie,X-Requested-With, 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;
    }
}

2、在Kernel.php中添加

在  producted $middleGroups    api中加入cors;

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            'cors'
        ],
    ];

 在  protected $routeMiddleware  中引入cors

 protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'cors'=>\App\Http\Middleware\CrossHttp::class,
    ];

3.在web.php中调用中间件即可;

Route::get("administrator",'admin\Administrator@index')->middleware("cors");

 

标签:laravel,Http,跨域,Middleware,response,Access,Illuminate,class
From: https://www.cnblogs.com/junwuxiao/p/17532002.html

相关文章

  • css字体---跨站引入报跨域问题【解决方法】
    最近遇到一个问题,考虑到网站的性能,需要将图标字体单独放到一个网站引入,减少资源占用,但是遇到一个问题,引入字体文件的时候,报跨域的错误。具体解决方法:将图标字体转base64转换网址:https://transfonter.org/按照以下三个步骤进行操作: 然后下周这个: 里面有个:stylesheet.cs......
  • 在Vite和Laravel 10中包含图像的Vue组件
    在使用Vite和Laravel8中包含图像的Vue组件,可以按照以下步骤进行操作:在Vue组件中引入图像:首先,确保将图像文件放置在Laravel项目的公共目录中,例如public/images文件夹。然后,在Vue组件中使用require或import语句引入图像:<template><div><img:src="require('@/images/i......
  • laravel9中模型类在idea中where等不提示的问题
     虽然安装了插件,但模型还是没有代码提示,可以通过安装插件解决(按照顺序安装):composerrequirebarryvdh/laravel-ide-helperphpartisanide-helper:generate#为Facades生成注释phpartisanide-helper:models#为数据模型生成注释phpartisanide-helper:meta......
  • 跨域问题
    1.什么是跨域?CSRF(Cross-siterequestforgery),中文名称:跨站请求伪造,也被称为:oneclickattack/sessionriding,缩写为:CSRF/XSRF。https://www.ruanyifeng.com/blog/2016/04/cors.htmlhttps://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html2.怎么解决跨域?客户端向......
  • Laravel入门
    安装composer:一个PHP项目的第三方库的管理工具wgethttps://getcomposer.org/download/2.6.2/composer.pharchmoda+xcomposer.pharsudomvcomposer.phar/usr/local/bin/composervi~/.bashrcsource~/.bashrcexportPATH=$HOME/.config/composer/vendor/bin:$PATH查看项目......
  • 前端项目实战肆佰零玖react-admin和material ui-跨域方案http-proxy-middleware
    const{createProxyMiddleware}=require('http-proxy-middleware');module.exports=(app)=>{app.use(createProxyMiddleware('/postgrest',{target:'http://localhost:4000',changeOri......
  • Laravel详解DB::raw() 用法
       解析:这个语法的原理就是把你查询的结果集当成一个临时表,然后在使用laravel的查询构造器语法进行分页处理;......
  • Ajax 跨域报错 python后端处理
    Ajax跨域报错python后端处理个人项目,前端接口用Ajax写的,python后端部署在另一台电脑上,发出以下报错:查询很久发现是因为前端向后端发送请求时,会预先发送一个OPTION的请求,然后请求通过之后才能够发送这个POST的请求。具体原因还是没有理解,只知道这个大概,有理解的可以评论区......
  • laravel邮件发送
    1.配置.env文件2.书写Controller3.书写API4.测试API......
  • SpringBoot解决跨域问题
    一、概述现在企业级的项目大多数都是前后端分离,加之微服务技术已经成熟,在日常的开发中就难免遇到跨域问题。跨域指的是:浏览器不能执行其他网站的脚本,从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域是由浏览器的同源策略造成的,是浏览器施......