资讯专栏INFORMATION COLUMN

Laravel API 允许跨域访问

wing324 / 2118人阅读

服务器A请求服务器B的接口,那么一般会出现跨域问题。
XMLHttpRequest cannot load http://api.console.vms3.com/api/user. No "Access-Control-Allow-Origin" header is present on the requested resource. Origin "http://localhost:8080" istherefore not allowed access.

意思就是服务器响应不允许跨域访问.

那我们就需要让服务器支持跨域访问, 也就是在响应头部中添加

"Access-Control-Allow-Origin: *"
第一步: 创建中间件
创建 `app/Http/Middleware/AccessControlAllowOrigin.php` middleware 把 "Access-Control-Allow-Origin: *" 写入头部.
app/Http/Middleware/AccessControlAllowOrigin.php

第二步: 注册路由

注册这个 middlewarekernel 中.
分别在 protected $middleware 数组中和 protected $routeMiddleware 数组中
添加我们刚才创建的那个文件class名, 使用 cors 这个别名.

第三步: 设置中间件保护接口

然后在设置它保护 api , 就是$middlewareGroups["api"] 的数组中添加它的别名, 本文中是 "cors"
app/Http/Kernel.php

 [
            AppHttpMiddlewareEncryptCookies::class,
            IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
            IlluminateSessionMiddlewareStartSession::class,
            // IlluminateSessionMiddlewareAuthenticateSession::class,
            IlluminateViewMiddlewareShareErrorsFromSession::class,
            AppHttpMiddlewareVerifyCsrfToken::class,
            IlluminateRoutingMiddlewareSubstituteBindings::class,
        ],

        "api" => [
            "throttle:60,1",
            "bindings",
            "cors"
        ],
    ];

    /**
     * The application"s route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        "auth" => IlluminateAuthMiddlewareAuthenticate::class,
        "auth.basic" => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
        "bindings" => IlluminateRoutingMiddlewareSubstituteBindings::class,
        "can" => IlluminateAuthMiddlewareAuthorize::class,
        "guest" => AppHttpMiddlewareRedirectIfAuthenticated::class,
        "throttle" => IlluminateRoutingMiddlewareThrottleRequests::class,
        "cors" => AppHttpMiddlewareAccessControlAllowOrigin::class,
    ];
}
第四步:在路由中添加路由
Route::middleware("cors")->group(function () {
    //
});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29563.html

相关文章

  • 【日常填坑】之ajax请求laravelapi接口

    摘要:合适和够用是最完美的追求。比如从页面去请求的资源。它允许浏览器向跨源服务器,发出请求,从而克服了只能同源使用的限制。定义在中的路由都是无状态的,并且会应用中间件组。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是最完美的追求。 个人网站:http://www.linganm...

    Arno 评论0 收藏0
  • 【日常填坑】之ajax请求laravelapi接口

    摘要:合适和够用是最完美的追求。比如从页面去请求的资源。它允许浏览器向跨源服务器,发出请求,从而克服了只能同源使用的限制。定义在中的路由都是无状态的,并且会应用中间件组。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是最完美的追求。 个人网站:http://www.linganm...

    neu 评论0 收藏0
  • 【日常填坑】之ajax请求laravelapi接口

    摘要:合适和够用是最完美的追求。比如从页面去请求的资源。它允许浏览器向跨源服务器,发出请求,从而克服了只能同源使用的限制。定义在中的路由都是无状态的,并且会应用中间件组。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是最完美的追求。 个人网站:http://www.linganm...

    fuyi501 评论0 收藏0
  • Laravel 开启跨域功能

    摘要:跨域的请求出于安全性的原因,浏览器会限制中的跨域请求。跨源共享标准需要浏览器和服务端共同配合才能完成,目前浏览器厂商已经可以将请求部分自动完成,所以跨源资源访问的重点还是在于服务器端。指明预请求或者跨域请求的来源。 跨域的请求 出于安全性的原因,浏览器会限制 Script 中的跨域请求。由于 XMLHttpRequest 遵循同源策略,所有使用 XMLHttpRequest 构造 HT...

    muzhuyu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<