2017-12-12 7 views
1

メインドメインのサブドメインからログインメソッドを呼び出しており、CORSミドルウェアを作成しました。しかし、期待どおりに動作しません。Laravel CORS issue

私は、要求が特定のドメインから来たかどうかを確認したいので、私はこれやってみました:

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']は時々私が期待値を返さないということです。要求元を返すべきではありませんか?

+0

**「HTTP_REFERER」 電流にユーザーエージェントを参照するページのアドレス(もしあれば)ページ。これはユーザエージェントによって設定されます。すべてのユーザーエージェントでこれを設定するわけではなく、HTTP_REFERERを機能として変更する機能もあります。要するに、それは本当に信頼できるものではありません。** – madalinivascu

+0

さて、解決策は? – Norgul

+0

静的なURLを使用していますか? – madalinivascu

答えて

0

は、私が実際に原点にリファラを変更し、私の問題を解決するコードのこの部分を追加しました:

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