ASCII码 ASCII码

laravel开发中跨域的解决方案

发布于:2022-04-11 10:02:54  栏目:技术文档

最近在开发中遇到了跨域的需求,通过查找相关资料找到了相关的解决方法了,所以下面这篇文章主要给大家介绍了关于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. ];
相关推荐
阅读 +