Добавьте несколько доменов в x-frame-options в заголовке с помощью Laravel - PullRequest
0 голосов
/ 22 мая 2018

Я хотел бы добавить несколько доменов в X-Frame-Options, потому что я должен авторизовать facebook и мессенджер.

Я пробовал много вещей, например ...

Я создалmiddleware:

<?php

namespace App\Http\Middleware;

use Closure;

class FrameHeadersMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        $response->header('X-Frame-Options', 'ALLOW FROM https://www.messenger.com/');
        $response->header('X-Frame-Options', 'ALLOW FROM https://www.facebook.com/');

        return $response;
    }
}

Но добавлен только Facebook ...

enter image description here

Редактировать: Я использую http referer с этим:

    <?php

    namespace App\Http\Middleware;

    use Closure;
    use Request;

    class FrameHeadersMiddleware
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            $response = $next($request);

            if(Request::server('HTTP_REFERER') === 'www.messenger.com'){
                $response->header('X-Frame-Options', 'ALLOW FROM https://www.messenger.com/');
            }

            if(Request::server('HTTP_REFERER') === 'www.facebook.com'){
                $response->header('X-Frame-Options', 'ALLOW FROM https://www.facebook.com/');
            }

            return $response;
        }
    }

1 Ответ

0 голосов
/ 22 мая 2018

Вы не можете иметь несколько X-Frame-Options заголовков одновременно.

См. спецификацию :

2.3.2.3.Шаблон проектирования использования и пример сценария для параметра ALLOW-FROM

Поскольку поле «ALLOW-FROM» поддерживает только один сериализованный источник, в
случаях, когда сервер желает разрешить более одного ресурса в кадреего содержание, следующий шаблон проектирования может удовлетворить эту потребность:

  1. Страница, которая хочет отобразить запрошенное содержимое во фрейме, передает свою собственную информацию о происхождении на сервер, предоставляя контент, который должен быть созданс помощью параметра строки запроса.

  2. Сервер проверяет, соответствует ли имя хоста его критериям, и разрешается ли создание страницы целевым ресурсом.Это может, например, произойти с помощью поиска в белом списке доверенных доменных имен, которым разрешено обрамлять страницу.Например, для кнопки «Мне нравится» на Facebook сервер может проверить, что указанное имя хоста соответствует имени хоста, ожидаемому для этой кнопки «Мне нравится».

  3. Сервер возвращаетимя хоста в «X-Frame-Options: ALLOW-FROM», если на шаге № 2 были соблюдены надлежащие критерии.

  4. Браузер использует «X-Frame-Options: ALLOW-ОТ "заголовок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...