@deepin

Как сделать json недоступным для просмотра в браузере?

формируем json

<?php


namespace app\controllers;


class JsonController extends AppController
{
    public function regenTimersAction()
    {
        $this->layout = false;// отключаем шаблон
        if ($this->checkAuth()) {
            $json = new \stdClass();
            $json->hp = $this->user->hp;
            $json->hp_max = $this->user->hp_max;
            $json->hp_reg = $this->user->hp_reg;
            $json->mp = $this->user->mp;
            $json->mp_max = $this->user->mp_max;
            $json->mp_reg = $this->user->mp_reg;
            $json->hit = $this->user->hit;
            $json->hit_max = $this->user->hit_max;
            $json->hit_reg = $this->user->hit_reg;
            echo json_encode($json);
        }
    }
}


видим путь к json

$(function () {
    $.getJSON('/json/regen-timers', function (json) {
        let timer = [];
        $.each(['hp', 'mp', 'hit'], function (index, element) {
            if (parseInt(json[element]) < parseInt(json[element + '_max'])) {
                let now = parseFloat(json[element]);
                timer[index] = setInterval(function () {
                    now += parseFloat(json[element + '_reg']);
                    if (parseInt(now) === parseInt(json[element + '_max'])) {
                        clearInterval(timer[index]);
                    }
                    $('#' + element).html(parseInt(now));
                }, 1000);
            }
        });
    });
});


заходим из браузера

5d3bde39e3094308331946.png

как правильно закрыть, чтобы без аякса не отображалась страница?
если можно, поделитесь правильным кодом проверки на аякс
или не заморачиваться?
  • Вопрос задан
  • 574 просмотра
Решения вопроса 6
@MadridianFox
Web-программист, многостаночник
Можно проверять чтобы был заголовок HTTP_X_REQUESTED_WITH в котором указано что запрос имеет тип xmlhttprequest, т.е. ajax.

А вообще, кому оно надо - открывать в браузере url'ы из кода? Если кто-то прям очень захочет - он сам сформирует такой запрос и всё-равно получит данные. Априори нельзя защитить контент, который вы хотите отдать в браузер.
Ответ написан
@RookDeveloper
Забей. JSON захотят - перехватят и посмотрят через вкладку network. Даже json'ки Вконтакте, фейсбука можно посмотреть, главное, чтобы уязвимостей не было в твоей системе и пользователь при всем желании не смог бы воспользоваться данными из json во вред тебе. Не заморачивайся :)
Ответ написан
samodum
@samodum
Никак. Не заморачивайся
Ответ написан
@axyal
Разрабатываю для себя
Может использовать токены?
Если запрос с токеном, то показываем json, в противном случае не показываем
Ответ написан
AleksandrB
@AleksandrB
Самый простой способ - выводить данные не через get, а через post. Теоретически, можно через form отправить post запрос и зайти на страницу с браузера, но обычный юзер через адресную строку не сможет.
Ответ написан
VladimirAndreev
@VladimirAndreev
php web dev
Все способы - от честных людей
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
21 авг. 2019, в 13:40
25000 руб./за проект
21 авг. 2019, в 13:15
500 руб./за проект