最近在开发中遇到了跨域的需求,通过查找相关资料找到了相关的解决方法了,所以下面这篇文章主要给大家介绍了关于laravel开发中跨域的解决方案,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

众所周知我们大家在用 laravel 进行开发的时候,特别是前后端完全分离的时候,由于前端项目运行在自己机器的指定端口(也可能是其他人的机器) , 例如 localhost:8000 , 而 laravel 程序又运行在另一个端口,这样就跨域了,而由于浏览器的同源策略,跨域请求是非法的。其实这个问题很好解决,只需要添加一个中间件就可以了。下面话不多说了,来随着小编一起看看详细的解决方案吧。
解决方案:

1、新建一个中间件

  1. php artisan make:middleware EnableCrossRequestMiddleware

书写中间件内容

  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. class EnableCrossRequestMiddleware
  5. {
  6. /**
  7. * Handle an incoming request.
  8. *
  9. * @param \Illuminate\Http\Request $request
  10. * @param \Closure $next
  11. * @return mixed
  12. */
  13. public function handle($request, Closure $next)
  14. {
  15. $response = $next($request);
  16. $origin = $request->server('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : '';
  17. $allow_origin = [
  18. 'http://localhost:8000',
  19. ];
  20. if (in_array($origin, $allow_origin)) {
  21. $response->header('Access-Control-Allow-Origin', $origin);
  22. $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN');
  23. $response->header('Access-Control-Expose-Headers', 'Authorization, authenticated');
  24. $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
  25. $response->header('Access-Control-Allow-Credentials', 'true');
  26. }
  27. return $response;
  28. }
  29. }

$allow_origin 数组变量就是你允许跨域的列表了,可自行修改。
3、然后在内核文件注册该中间件

  1. protected $middleware = [
  2. // more
  3. App\Http\Middleware\EnableCrossRequestMiddleware::class,
  4. ];

更多相关文章

  1. Android— Eclipse运行Emulator时提示权限不够解决方案(ubuntu 10
  2. Android(安卓)stdio调试程序闪退或者报错:"xxx keeps stopping"
  3. Android9.0网络请求解决方案_小笔记
  4. [Android] 提高ORMLite插入大量数据效率的解决方案
  5. android 开发中遇到的问题
  6. Linux下Android(安卓)SDK中adb找不到的解决方案
  7. 转:Bitmap造成OOM的讨论与解决方案
  8. Android(安卓)应用异常记录
  9. Android(安卓)签名失败 Lint found fatal errors while assembli

随机推荐

  1. Android修炼之道——Shape
  2. android基于dialog加载时转圈圈的demo
  3. Android(安卓)视频分离和合成(MediaMuxer
  4. 通过AndroidTestCase来进行android 单元
  5. android琐碎记四
  6. How to change an Android app's name?
  7. 同样line-height下ios和Android显示不一
  8. Android小知识7
  9. android 2.3 修改 statusbar
  10. Android(安卓)拦截音量键,控制系统媒体音