Задать вопрос

Как запретить показ страницы, загружаемой не через ajax?

Доброго времени суток!

Может вопрос в шапке не совсем корректен, но постараюсь описать проблему!

Есть шаблон страницы на laravel blade
В который вставляется через ajax динамическое содержимое. (html + данные полученные из контроллера)
Естественно содержимое не имеет ни стилей, ни другой информации (например: формы, таблицы и т.д.).
есть страницы редактирования пользовательских данных /account/update. по этому адресу можно получить кусок html с какими то данными.

Через ajax (код ниже) я подгружаю данные в шаблон основной страницы
$(document).ready(function() {
    $('#menu a').click(function() {
        var url = $(this).attr('href');

        $.ajax({
            url:     url + '?link=1',
            success: function(r){
                $('#content').html(r);
            }
        });

        if (url != window.location){
            window.history.pushState(null, null, url);
        }

        return false;
    });

    $(window).bind('popstate', function() {
        $.ajax({
            url:     location.pathname + '?link=1',
            success: function(r){
                $('#content').html(r);
            }
        });
    });
});

Все успешно работает.
Но беда в том, что если просто перейти по адресу site.ru/account/update получаем html код, без стилей и всего прочего. Даже если делать редирект на эту страницу после обновления данных, получим обычный кусок кода.
Так вот к чему я все это, как сделать так, чтобы этого не происходило, чтобы ajax'ом все грузилось, а так в открытом виде нет. Или может я вообще загнался и все не так делаю?( Помогите советом пожалуйста
  • Вопрос задан
  • 420 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@MuTaToRage
if(!(array_key_exists('HTTP_X_REQUESTED_WITH',$_SERVER) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'))
{
     print 'это не ajax';
     return;
}
print 'HTML code';
return;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
difiso
@difiso
В параллельной вселенной я космонавт
Можно сделать как говорит Rikcon, а можно сделать Middleware. Разница в том, сколько у вас таких мест: если таких мест много, то лучше использовать middleware, если одно-два — if(Request::ajax()).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы