Твиттер дважды кодирует ссылки на сущности? - PullRequest
1 голос
/ 24 июня 2009

Почему твиттер дважды кодирует ссылки на сущности XML?

Вот пример твита:

xml entity ref test < & '

Ответ от статусов / friends_timeline:

<status>
  <created_at>Wed Jun 24 00:16:15 +0000 2009</created_at>
  <id>2302770346</id>
  <text>xml entity ref test &amp;lt; &amp; '</text>
  <source>web</source>
  <truncated>false</truncated>

не должно быть

&lt; &amp; &apos;

Я сделал еще один тест, вот что происходит в посте http, чтобы отправить обновление:

снова понюхать <& '</p>

почтовые данные:

authenticity_token=secret_sauce_removed&status=sniff+again+%3C+%26+'&twttr=true&return_rendered_status=true

Я подтвердил замечание Джастина о том, что только <> кодируется дважды. Первая строка - XML-ответ, 2-я строка - JSON.

 <text>&quot; &amp; ' &amp;lt; &amp;gt;</text>
"text":"\" & ' &lt; &gt;"

В документации Твиттера написано, что "экранированный и кодированный HTML статус тела", я думаю, экранированный означает xml-кодировку <>.

Но я все еще не понимаю, почему они это делают. Никакие веб-страницы не участвуют во всем процессе. Твит отправляется через URL-адрес остального API и извлекается как xml или json.

Ответы [ 2 ]

2 голосов
/ 24 июня 2009

Это двойная кодировка, потому что свойство text является квази-HTML-кодированным текстом (похоже, они только кодируют <и>, так что вы не можете начинать / заканчивать новый HTML-элемент в своем твите). Поэтому, прежде чем XML проанализирует его для связи по сети, вы должны иметь:

xml entity ref test &lt; & '

Эта строка затем снова кодируется (так что когда она декодируется, это все еще правильный HTML-кодированный текст), который превращает ее в:

xml entity ref test &amp;lt; &amp; '

Что ты возвращаешься.

0 голосов
/ 24 июня 2009

Похоже, что он берет код HTML и вставляет его в поле XML, поэтому, когда вы используете синтаксический анализатор XML для XML, вы получаете действительный HTML.

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