CrossDomain.php 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. // | Author: sai <1430792918@qq.com>
  6. // +----------------------------------------------------------------------
  7. namespace plugin\saiadmin\app\middleware;
  8. use Webman\Http\Request;
  9. use Webman\Http\Response;
  10. use Webman\MiddlewareInterface;
  11. /**
  12. * 跨域中间件
  13. */
  14. class CrossDomain implements MiddlewareInterface
  15. {
  16. public function process(Request $request, callable $handler) : Response
  17. {
  18. // 如果是options请求则返回一个空响应,否则继续向洋葱芯穿越,并得到一个响应
  19. $response = $request->method() == 'OPTIONS' ? response('') : $handler($request);
  20. // 给响应添加跨域相关的http头
  21. $response->withHeaders([
  22. 'Access-Control-Allow-Credentials' => 'true',
  23. 'Access-Control-Allow-Origin' => $request->header('origin', '*'),
  24. 'Access-Control-Allow-Methods' => $request->header('access-control-request-method', '*'),
  25. 'Access-Control-Allow-Headers' => $request->header('access-control-request-headers', '*'),
  26. ]);
  27. return $response;
  28. }
  29. }