繁体   English   中英

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']有时不返回我期望的值。 它不应该返回请求的来源吗?

我实际上将引荐来源网址更改为来源,并添加了这部分代码来解决我的问题:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM