Желательно ли сохранять состояние веб-приложения с помощью JSON в URL? - PullRequest
1 голос
/ 04 августа 2010

Вы можете сохранить состояние веб-приложения с помощью JSON в URL следующим образом:

  http://host/?state=[{id:1,selected=true},{id:2,selected=false}]

Это предпочтительнее?

Одной из причин такого действия является то, что если пользователь добавляет в закладки веб-страницу, состояние веб-приложения можно восстановить при следующем посещении страницы.

Ответы [ 3 ]

1 голос
/ 04 августа 2010

Это может быть выполнимо, но я думаю, что это несколько плохая практика, потому что:

  • Вы предоставляете конечным пользователям множество технических деталей о вашем веб-приложении
  • Вы уверены, что используете безопасный анализ JSON? В противном случае вы открываете свое приложение до атак с использованием Javascript.
  • Рано или поздно вы столкнетесь с проблемами кодировки символов URL
  • Ваш URL не очень описательный (см. http://css -tricks.com / Guidelines for-uri-design / )

Мой совет: создайте идентификатор для state, привязанного к вашему JSON, хранящемуся в базе данных (ваши URL будут выглядеть более точно по линиям http://host/?state=123 с 123, указывающими на какую-то запись базы данных (не то, что она URL также очень доступен, но я все еще думаю, что это лучше из-за других упомянутых пунктов).

0 голосов
/ 04 августа 2010

Ваше решение в порядке. У меня есть только несколько очков для вас.

Одной из проблем является длина URL. Разные браузеры имеют разные ограничения. Если вы должны это сделать, и ваши URL-адреса приближаются к 2000 символам, у вас могут возникнуть проблемы. Если имена ваших полей занимают слишком много места, используйте вместо них фиксированный порядок полей. Оставьте поля, которые не нужно ставить в закладки. В крайних случаях рассмотрите возможность использования алгоритма gzip для сжатия длинного URL. Затем перекодируйте эти двоичные данные в base64, используя только символы, допустимые в URL. Это связано со стоимостью некоторого процессорного времени, когда вы снова разархивируете URL при следующем посещении.

Альтернативой является сохранение информации о состоянии в файле или базе данных. Затем вы можете сохранить только идентификатор, необходимый для повторного поиска этой информации в URL.

0 голосов
/ 04 августа 2010

Вы должны проанализировать JSON-String, чтобы получить все данные обратно, что может быть немного сложным.Но вы можете сделать это, если не хотите использовать строку запроса самостоятельно (возможно, структура слишком сложна).Но помните: строка запроса имеет ограниченную длину!

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