Laravel CORS 问题

Laravel CORS issue

我正在从主域的子域调用登录方法,我制作了一个 CORS 中间件来处理它。但是它没有按预期工作。

我想检查请求是否来自特定域,所以我尝试这样做:

public function handle($request, Closure $next)
{
    if(!isset($_SERVER['HTTP_REFERER']))
        return $next($request);

    $originalDomain = config('session.domain');

    $parsedUrl = parse_url($_SERVER['HTTP_REFERER']);
    $splitDomain = explode('.', $parsedUrl['host'], 2);
    $subdomain = $splitDomain[0];
    $domain = $splitDomain[1];

    $subdomainValid = ($parsedUrl['host'] != $originalDomain) && ($originalDomain == $domain);

    if(!$subdomainValid)
        return $next($request);

    $allowedUrl = $parsedUrl['scheme'] . '://' . $subdomain . '.' . config('session.domain');

    return $next($request)
        ->header('Access-Control-Allow-Origin', $allowedUrl)
        ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
        ->header('Access-Control-Allow-Headers', 'Origin, x-requested-with, x-csrf-token');
}

但我遇到的问题是 $_SERVER['HTTP_REFERER'] 有时 return 不是我期望的值。不应该是 return 请求的来源吗?

我实际上将 referrer 更改为 origin 并添加了这部分代码来解决我的问题:

    if (isset($_SERVER['HTTP_ORIGIN']))
        $referrer = $_SERVER['HTTP_ORIGIN'];
    else
        $referrer = request()->url();