Недавно у меня появился новый принтер (в частности, HP Photosmart C6380, если это помогает), который позволяет мне отправлять текст на порт 9100 для печати. Telnet-подключение к нему и ввод текста для печати работает нормально, но мне интересно, могу ли я создать веб-страницу, используя HTML и Javascript, которые могут отправлять текст прямо на нее.
В настоящее время я использую код из статьи Межсайтовая печать (pdf),, но недостатком является то, что при распечатке он показывает весь запрос POST, а не только текст.
Итак, мой вопрос к вам: могу ли я отправить только содержимое запроса POST или удалить ненужные символы, используя только HTML и Javascript?
Примечание. Причина, по которой он ограничен HTML и Javascript, заключается в том, что я надеюсь, что смогу использовать его на iPhone или iPod Touch.
Редактировать: Похоже, что нет способа избавиться от заголовков HTTP, поэтому теперь мой вопрос: могу ли я создать собственный запрос POST, который минимизирует то, что отправляется в заголовке? Например, могу ли я не отправлять пользовательский агент, поскольку принтеру все равно, что это за пользовательский агент?
Я хочу избежать настройки сервера и пересылки данных через посредника. Это в основном для моего личного использования, когда я подключен к своей домашней сети. Я представляю себе локальную веб-страницу с текстовым полем, которое я могу ввести, нажать «Отправить», и он будет распечатан.
Кроме того, я предполагаю загрузить это на свой iPod Touch с помощью такого приложения, как Air Sharing, чтобы я мог набрать текст и распечатать его, поскольку у него нет такой возможности.
Но если это решение для вашей домашней сети, что мешает вам настроить только локально доступный веб-сервер? Или даже написать базовый вариант самостоятельно - просто отбросьте заголовок (все до \ r \ n \ r \ n), передайте остальное на порт вашего принтера и отправьте в браузер сообщение «204 No Content»?
Ничто не мешает мне настроить сервер, я просто надеялся, что смогу сделать что-то полностью самодостаточным только на HTML и Javascript.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете выполнять HTTP-запросы из JS, поэтому у вас всегда есть HTTP-заголовок, независимо от порта, на который вы отправляете. Итак, ответ: нет.
Нет, в клиентском JavaScript невозможно избавиться от заголовков HTTP. Для этого вам необходимо настроить серверный скрипт, который затем установит фактическое соединение с портом принтера.
Редактировать: Серверный сценарий не будет отправлять HTTP-запрос на ваш принтер: он должен открыть новый сокет и, таким образом, может полностью контролировать то, что отправляется!
Могу ли я создать собственный запрос POST в Javascript на стороне клиента, чтобы минимизировать количество распечатываемой ненужной информации?
Да, вы можете отправлять пользовательские запросы через XMLHttpRequest (также называемый AJAX). Но в этом нет необходимости: используйте простую старую HTML-форму (с method = "POST") и язык на стороне сервера по вашему выбору (PHP, ASP.NET, Perl, Python, ...). Afaik все они могут читать переменные POST и создавать сокеты ...
Почему вы против создания сценария на стороне сервера для обработки вашего запроса и пересылки данных на принтер? Это как пара строк perl ...