<?php
<?php
namespace Fruitcake\Cors;
use Closure;
use Asm89\Stack\CorsService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Symfony\Component\HttpFoundation\Response;
class HandleCors
{
/** @var CorsService $cors */
protected $cors;
public function __construct(CorsService $cors)
{
$this->cors = $cors;
}
/**
* Handle an incoming request. Based on Asm89\Stack\Cors by asm89
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return Response
*/
public function handle($request, Closure $next)
{
Log::info('cros----------------------');
Log::info('cros---' . var_export($this->shouldRun($request), true));
//$response = $next($request);
$response = new Response();
$response->headers->set('Access-Control-Allow-Origin', $request->headers->get('Origin'));
if ($this->options['maxAge']) {
$response->headers->set('Access-Control-Max-Age', $this->options['maxAge']);
}
$allowMethods = $this->options['allowedMethods'] === true
? strtoupper($request->headers->get('Access-Control-Request-Method'))
: implode(', ', $this->options['allowedMethods']);
$response->headers->set('Access-Control-Allow-Methods', $allowMethods);
$allowHeaders = $this->options['allowedHeaders'] === true
? strtoupper($request->headers->get('Access-Control-Request-Headers'))
: implode(', ', $this->options['allowedHeaders']);
\Illuminate\Support\Facades\Log::info('Access-Control-Request-Headers', $this->options['allowedHeaders']);
\Illuminate\Support\Facades\Log::info('当前方法 cors:', [$request->getMethod()]);
$response->headers->set('Access-Control-Allow-Headers', $allowHeaders);
$response->setStatusCode(204);
return $response;
// return $response;
// Add the CORS headers to the Response
return $this->addHeaders($request, $response);
}
/**
* Add the headers to the Response, if they don't exist yet.
*
* @param Request $request
* @param Response $response
* @return Response
*/
protected function addHeaders(Request $request, Response $response): Response
{
if (!$response->headers->has('Access-Control-Allow-Origin')) {
Log::info('Allow-Origin 存在吗?:');
$response = $this->cors->addActualRequestHeaders($response, $request);
}
return $response;
}
}
<?php
$response = new Response();
$response->headers->set('Access-Control-Allow-Origin', $request->headers->get('Origin'));
if ($this->options['maxAge']) {
$response->headers->set('Access-Control-Max-Age', $this->options['maxAge']);
}
$allowMethods = $this->options['allowedMethods'] === true
? strtoupper($request->headers->get('Access-Control-Request-Method'))
: implode(', ', $this->options['allowedMethods']);
$response->headers->set('Access-Control-Allow-Methods', $allowMethods);
$allowHeaders = $this->options['allowedHeaders'] === true
? strtoupper($request->headers->get('Access-Control-Request-Headers'))
: implode(', ', $this->options['allowedHeaders']);
\Illuminate\Support\Facades\Log::info('Access-Control-Request-Headers', $this->options['allowedHeaders']);
\Illuminate\Support\Facades\Log::info('当前方法 cors:', [$request->getMethod()]);
$response->headers->set('Access-Control-Allow-Headers', $allowHeaders);
$response->setStatusCode(204);
return $response;