You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
2.0 KiB

5 years ago
5 years ago
5 years ago
  1. <?php
  2. namespace App\Middleware;
  3. use Hyperf\Utils\Context;
  4. use Psr\Http\Message\ResponseInterface;
  5. use Psr\Http\Message\ServerRequestInterface;
  6. use Psr\Http\Server\MiddlewareInterface;
  7. use Psr\Http\Server\RequestHandlerInterface;
  8. class CorsMiddleware implements MiddlewareInterface
  9. {
  10. /**
  11. * @inheritDoc
  12. */
  13. public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  14. {
  15. $response = Context::get(ResponseInterface::class);
  16. $response = $response->withHeader('Access-Control-Allow-Origin', '*')
  17. ->withHeader('Access-Control-Allow-Credentials', 'true')
  18. // Headers 可以根据实际情况进行改写。
  19. ->withHeader('Access-Control-Allow-Headers', 'DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization');
  20. Context::set(ResponseInterface::class, $response);
  21. if ($request->getMethod() == 'OPTIONS') {
  22. return $response;
  23. }
  24. // $request = \Hyperf\Utils\Context::override(ServerRequestInterface::class, function (ServerRequestInterface $request)
  25. // {
  26. // $preDatas = $request->getParsedBody();
  27. // if(isset($preDatas['market_id'])){
  28. // if($preDatas['market_id']==-1){
  29. // $preDatas['market_id'] = 0;
  30. //
  31. // if (env('APP_ENV') == 'prod') {
  32. // unset($preDatas['sign']);
  33. // $sign = $this->signature($preDatas);
  34. // $preDatas['sign'] = $sign;
  35. // }
  36. // }
  37. // }
  38. // return $request->withParsedBody($preDatas);
  39. // });
  40. return $handler->handle($request);
  41. }
  42. // private function signature($params)
  43. // {
  44. // ksort($params);
  45. //
  46. // $http_query = [];
  47. // foreach ($params as $key => $value) {
  48. // $http_query[] = $key.'='.$value;
  49. // }
  50. //
  51. // return sha1(md5(implode('&', $http_query)).config('auth.api.sign.secret_key'));
  52. // }
  53. }