2016-12-10 2 views
0

В среде разработки мой сайт может сделать локальный запрос для печати на сетевом принтере через javascript.Может ли мой сайт сделать локальный запрос?

Но как только мой сайт размещен в сети, я больше не могу получить доступ к локальному принтеру. Я понимаю, почему это происходит, если незнакомец должен был получить доступ к моему веб-сайту через Интернет, но не могу ли я этого сделать, если я получаю доступ к собственному веб-сайту (где мой принтер является локальным для этого компьютера)?

EDIT: Это требование я сделать, чтобы напечатать в разработке, и это работает, потому что мой принтер является локальным: «http://192.168.1.100/StarWebPRNT/SendMessage»

+0

На вашем веб-сайте нет доступа к любому принтеру, это ОС, которая выполняет печать из браузера? – adeneo

+0

@adeneo Я делаю веб-запрос для печати на моем принтере. Это не печать из ОС, да, это не нормально, принтер квитанции, который я предоставляю этой технологии, позволяет печатать веб-запрос. – echan00

+0

Если ваш веб-сайт также не размещен с 'http: // 192.168.1.100 /', запрос не будет передан [политика одинакового происхождения] (https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) (локальные сети не изменяют результат SOP) и должны будут удовлетворять [одному из нескольких исключений] (https://stackoverflow.com/questions/3076414/ways-to -circumvent-the-same-origin-policy), или сделать серверную сторону, где SOP не применяется. Обратите внимание, что менее двух вариантов, CORS и JSON-P, веб-сервер принтера должен будет предлагать поддержку явно для использования. –

ответ

0

@ echan00,

Я думаю, что причина в том, что принтер находится в той же сети, в которой вы работаете. Основная проблема здесь - это IP-адреса. Большинство локальных сетей имеют IP-адрес, начиная с 192.168.XXX.XXX, поэтому ваш принтер, который находится в сети, также содержит IP-адрес в том же диапазоне.

Давайте предположим, что: Принтер => 192.168.1.100 и развитие машины => 192.168.1.45

Так как эти машины находятся на одной и той же сети, что они могут взаимодействовать друг с другом. Как только вы размещаете свой сайт у поставщика, IP-адрес веб-сайта больше не будет таким же, как IP-адрес вашего устройства. Предположим, он получает новый IP-адрес 10.1.57.221.

Итак, теперь на вашем веб-сайте размещен IP-адрес за пределами вашей локальной сети, и принтер по-прежнему находится в локальной сети. Если вы можете заметить ответ, полученный при получении запроса на печать http://192.168.1.100/StarWebPRNT/SendMessage с размещенного веб-сайта, существует очень высокая вероятность того, что вы закончите поражение 404 или время ожидания соединения, а не 200 запросов успеха.

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

Другой способ - продолжать хостинг с хостинг-провайдером, но назначить публичный IP-адрес принтеру, чтобы любой, кто знает IP-адрес, мог выдавать запрос печати на принтер. Таким образом, ваш веб-сайт сможет запросить принтер для печати.

+0

, вот что я тоже думаю. Поскольку мой сайт должен быть размещен у моего текущего провайдера, я думаю, мне нужно будет назначить публичный IP-адрес принтеру. Как мне это сделать? Я попытался выполнить переадресацию портов, но не повезло, это разрешение? FYI У меня есть доступ администратора к маршрутизатору и все в моей локальной сети .. – echan00

+0

Публичные IP-адреса предоставляются провайдером или облачным сервисом, который вы используете. Чтобы получить устройство в сети в общедоступной интернет-сети, вам необходимо запросить своего интернет-провайдера или если у вас есть ИТ-команда, вы должны отправить запрос администратору сети. Как правило, чтобы серверы были доступны публично и конфиденциально, администраторы сети устанавливают прокси-сервер, такой как кальмар, особенно в университетах, поскольку многие университеты имеют общедоступные веб-серверы, а также имеют внутренние сети LAN/vLAN. –

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