Laravel 5.4 api 允许跨域访问

需求: SPA单页应用请求接口, 报错

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' is therefore not allowed access.

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

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

'Access-Control-Allow-Origin: *'

文本使用Laravel 5.4版本

第一步: 创建中间件

创建 `app/Http/Middleware/AccessControlAllowOrigin.php` middleware 把 'Access-Control-Allow-Origin: *' 写入头部.

app/Http/Middleware/AccessControlAllowOrigin.php

<?phpnamespace App\Http\Middleware;use Closure;
use Illuminate\Support\Facades\Auth;class AccessControlAllowOrigin
{/**** Handle an incoming request.** @param  \Illuminate\Http\Request  $request* @param  \Closure  $next* @return mixed*/public function handle($request, Closure $next){header('Access-Control-Allow-Origin: *');header("Access-Control-Allow-Credentials: true");header("Access-Control-Allow-Methods: *");header("Access-Control-Allow-Headers: Content-Type,Access-Token");header("Access-Control-Expose-Headers: *");return $next($request);}}

第二步: 注册路由

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

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

然后在设置它保护 api , 就是$middlewareGroups['api'] 的数组中添加它的别名, 本文中是 'cors'

app/Http/Kernel.php

<?phpnamespace App\Http;use Illuminate\Foundation\Http\Kernel as HttpKernel;class Kernel extends HttpKernel
{/*** The application's global HTTP middleware stack.** These middleware are run during every request to your application.** @var array*/protected $middleware = [\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,\App\Http\Middleware\TrimStrings::class,\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,\App\Http\Middleware\AccessControlAllowOrigin::class,];/*** The application's route middleware groups.** @var array*/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' => ['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' => \Illuminate\Auth\Middleware\Authenticate::class,'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,'can' => \Illuminate\Auth\Middleware\Authorize::class,'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,'cors' => \App\Http\Middleware\AccessControlAllowOrigin::class,];
}

Laravel 5.4 api 允许跨域访问相关推荐

  1. 从实例入手学习使用vue+axios配置代理进行跨域访问百度音乐API

    场景 如果要使用axios直接进行跨域访问是不可以的,这是就需要配置代理了,为什么要配置代理呢? 原因就是因为客户端请求服务端的数据是存在跨域问题的,而服务器和服务器之间可以相互请求数据,是没有跨域的 ...

  2. SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)

    上个示例(SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API))是基于JavaScript,运行在web browser内去访问REST AP ...

  3. REST API之前端跨域访问

    关键字:跨域访问,cross-origin, NodeJS, REST API, JavaScript, Access-Control-Allow-Origin 1.新建并运行一个 NodeJS的se ...

  4. 解决Vue跨域访问后端API问题

    文章目录 前言 一.vue.config.js文件 二.配置代理参数 总结 前言 我们在写前后端分离的时候,请求后端接口是必要步骤,但是这个时候就有个问题,因为前端和后端是归属于不同端口,我们在直接访 ...

  5. [Unity WWW] 跨域访问解决方法

    什么是跨域访问 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation).信任关系是连接在域与域之间的桥梁.当一个域与其他域建立了信任 ...

  6. java 视频切片_关于视频播放、视频切片、跨域访问视频

    关于视频播放.视频切片.跨域访问视频 前言 最近在着手部署上线做的一个视频网站,当我们部署到云服务器上后并开始测试视频观看并发量,发现了一个很严重的问题:带宽不足.9 或 10 个人同时观看视频的时候 ...

  7. JQuery实现Ajax跨域访问--Jsonp原理

    JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为"Same-Origin Policy"(同源策略). ...

  8. 解决cookie跨域访问

    v一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入 ...

  9. 介绍一个JSONP 跨域访问代理API-yahooapis

    你是否遇到了想利用AJAX访问一些公网API,但是你又不想建立自己的代理服务,因为有时我根本就没打算涉及服务端任何代码,但是讨厌的浏览器的同源策略,阻止了我们的ajax调用. 比如我想访问一个天气的r ...

  10. SpringMVC+RestFul详细示例实战教程(实现跨域访问)

    一.理解 REST REST(Representational State Transfer),中文翻译叫"表述性状态转移".是 Roy Thomas Fielding 在他200 ...

最新文章

  1. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】
  2. JVM中垃圾收集算法
  3. Mongodb在Ubuntu下的安装
  4. 将图像中的某种颜色设为透明
  5. Ducci 队列 -基础queue,set
  6. ASP.NET的gridview设置数据格式(DataFormatString={})与 String.Format()【转载】
  7. php根据手机号码获取归属地,PHP通过API获取手机号码归属地
  8. UBUNTU-Mplay
  9. linux中命令tat,文件管理类命令(ls,tat,glob,cp,touch等)
  10. NoSQL数据库Redis--1
  11. android模拟奥克斯空调红外,奥克斯空调手机遥控器
  12. 惯导标定国内外研究现状小结(删减版)
  13. IDE工具、文本编辑器的列块编辑模式
  14. NISP网络信息安全面试怎么选择(六)NISP管理中心
  15. qq设置头衔显示服务器异常,qq头衔如何设置
  16. 用proteus实现STM32仿真
  17. 怎么做SEO——页面权重计算公式
  18. 中望3D 2020 图层管理器(图层的设置+移动图层+复制图层)
  19. 清北学堂模拟赛d3t6 c
  20. 一、HTML、HTTP、web综合问题

热门文章

  1. Spring AOP的实现思想之动态代理
  2. vue中Component错误
  3. react-native学习小结
  4. 写一个NSString类的实现
  5. UINavigationController 直接pop到指定controllerView的方法
  6. [记录] web icon 字体
  7. ConnectivityManager
  8. Objective-C学习—UIScrollView控件使用
  9. Android基础进阶
  10. Silverlight 2 又来了两本新书