2016-09-15 3 views
2

Я захватываю данные веб-страницы (думаю, аналогичную проблему - instapaper) и отправляя ее обратно на локальный сервер, а не через Интернет. Оба будут на одной машине, но я все равно хотел бы сделать ее более безопасной.2016 Отправка html на сервер

В настоящее время я хватаю html с веб-страниц и пытаюсь закодировать его в URI. Вот проблема. Встроенная функция encodeURI не работает должным образом, потому что некоторый контент внутри HTML-страницы уже закодирован, а некоторые из них нет! Как и сам HTML. Позвольте привести пример из (decades old website that still exists).

Этот код:

<title>You've Got Mail</title> потребности быть закодированы: "%3Ctitle%3EYou've%20Got%20Mail%3C/title%3E"

Но некоторые из них приходит в предварительно кодированный (до encodeURI называется):

<noframes> &lt;body bgcolor="#FFFFFF" background="../img/1bgbottom.gif" text="#000000" link="#2100c5" vlink="#2100c5" alink="#bd0031"&gt;

Есть любой простой способ взять HTML-страницу (во всем ее уродство) и надежно закодировать ее в URI?

ответ

0

Вы ищете encodeURIComponent(). На самом деле нет веской причины (я все равно знаю) для encodeURI().

После того, как вы используете encodeURIComponent(), он может быть расшифрован как есть, получая вас именно то, что был отправлен в.

На другой ноте, я не знаю, где вы делаете это кодирование, но если вы планируете используйте это в строке запроса, будьте осторожны, что существуют конечные ограничения строки запроса, обычно 4k или 64k. (По крайней мере, иногда вы можете настроить лимит на стороне сервера.)

+0

Не можете ли вы просто кодировать base64? постскриптум если вы удаляете ограничение длины строки запроса с помощью метода GET, вы всегда можете переключиться на POST и отправить все данные. –

+0

@ LukasLiesis Конечно, base64 - это еще один способ, который гарантирует двоичную совместимость с 33% -ными издержками. – Brad

Смежные вопросы