Недопустимые символы при запуске JSON Body API Dropwizard Rest - PullRequest
0 голосов
/ 01 мая 2018

Я создал базовый CRUD API, используя Dropwizard и Spring. В теле моего объекта ответа я получаю следующее:

 )]}',
 {
  "id":10,
  "initiator":2,
  "target":1,
  "statusId":1,
  "created":"2018-04-30T14:45:01.173"
 }

Я проверял API с помощью curl, postman и programatic во время тестирования с уверенностью, и недопустимые символы )]}', всегда присутствуют. Почтальон, кажется, способен игнорировать их и отображать довольно распечатанный вывод, однако будьте уверены, что большинство парсеров JSON не могут правильно его проанализировать.

Вопросы:

  1. Что это?
  2. Почему они присутствуют?
  3. Как мне их удалить?

Я писал REST API годами и никогда не видел ничего подобного. Я впервые использую dropwizard, поэтому я с оптимизмом надеюсь, что это какая-то конфигурация, которую я пропустил.

Помимо недопустимых символов, функционально API работает нормально.

Это унаследованная кодовая база, и другие API также возвращают эти символы. В целях тестирования в состоянии покоя недопустимые символы отфильтровываются перед обработкой ответа. Хотя это кажется приемлемым для меня в качестве обходного пути в краткосрочной перспективе, в долгосрочной перспективе все будущие потребители API должны будут все обходить, и в идеале это должно быть исправлено в самом API.

1 Ответ

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

Не знает DropWizard, но он существует, чтобы предотвратить json-угон. Весной есть MappingJackson2HttpMessageConverter класс.
который имеет ту же функцию, но префикс отличается "{} &&"

/**
 * Indicate whether the JSON output by this view should be prefixed with "{} &&". Default is false.
 * <p>Prefixing the JSON string in this manner is used to help prevent JSON Hijacking.
 * The prefix renders the string syntactically invalid as a script so that it cannot be hijacked.
 * This prefix does not affect the evaluation of JSON, but if JSON validation is performed on the
 * string, the prefix would need to be ignored.
 */
public void setPrefixJson(boolean prefixJson) {
    this.prefixJson = prefixJson;
}

Вы можете относиться к этому.

Редактировать 1: Версия Spring 4.2.0.RELEASE и далее, префикс по умолчанию был обновлен до )]} ',

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