Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

AllowOriginMiddleware.php 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace app\http\middleware;
  3. use app\Request;
  4. use crmeb\interfaces\MiddlewareInterface;
  5. use think\facade\Config;
  6. use think\Response;
  7. /**
  8. * 跨域中间件
  9. * Class AllowOriginMiddleware
  10. * @package app\http\middleware
  11. */
  12. class AllowOriginMiddleware implements MiddlewareInterface
  13. {
  14. /**
  15. * 允许跨域的域名
  16. * @var string
  17. */
  18. protected $cookieDomain;
  19. /**
  20. * @param Request $request
  21. * @param \Closure $next
  22. * @return Response
  23. */
  24. public function handle(Request $request, \Closure $next)
  25. {
  26. $this->cookieDomain = Config::get('cookie.domain', '');
  27. $header = Config::get('cookie.header');
  28. $origin = $request->header('origin');
  29. if ($origin && ('' == $this->cookieDomain || strpos($origin, $this->cookieDomain)))
  30. $header['Access-Control-Allow-Origin'] = $origin;
  31. if ($request->method(true) == 'OPTIONS') {
  32. $response = Response::create('ok')->code(200)->header($header);
  33. } else {
  34. $response = $next($request)->header($header);
  35. }
  36. $request->filter(['strip_tags', 'addslashes', 'trim']);
  37. return $response;
  38. }
  39. }