【问题标题】:Send Text to a Port Using Javascript使用 Javascript 向端口发送文本
【发布时间】:2010-10-02 23:43:04
【问题描述】:

我最近买了一台新打印机(特别是 HP Photosmart C6380,如果有帮助的话),它允许我将文本发送到端口 9100 进行打印。 Telnet 进入并输入要打印的文本可以正常工作,但我想知道是否可以使用 HTML 和 Javascript 制作一个可以直接向其发送文本的网页。

我目前正在使用文章 Cross Site Printing (pdf), 中的代码,但缺点是当它打印出来时会显示整个 POST 请求,而不仅仅是文本。

所以我的问题是我能否仅发送 POST 请求的内容或仅使用 HTML 和 Javascript 去除不需要的字符?

注意:它仅限于 HTML 和 Javascript 的原因是因为我希望我可以在 iPhone 或 iPod Touch 上使用它。

编辑:似乎没有办法摆脱 HTTP 标头,所以现在我的问题是我可以制作一个自定义 POST 请求,以最小化标头中发送的内容吗?例如,我可以不发送用户代理,因为打印机不关心用户代理是什么?

【问题讨论】:

  • 您为什么反对创建服务器端脚本来处理您的请求并将数据转发到打印机?这就像几行 perl...
  • 我想避免设置服务器并让中间人转发数据。当我连接到我的家庭网络时,这主要是供我个人使用的。我想象一个带有文本区域的本地网页,我可以输入并按提交,它会打印出来。
  • 另外,我设想使用 Air Sharing 之类的应用程序将它下载到我的 iPod Touch 上,这样我就可以输入一些文本并打印它,因为它缺乏这种功能。
  • 但是,如果它是您家庭网络的解决方案,那么是什么阻止您设置只能在本地访问的网络服务器?或者甚至自己编写一个基本的 - 只需删除标题(\r\n\r\n 之前的所有内容),将其余部分中继到您的打印机端口并将“204 No Content”发送到浏览器?
  • 没有什么能阻止我设置服务器,我只是希望我可以在 HTML 和 Javascript 中制作完全独立的东西。

标签: javascript html post port printing


【解决方案1】:

不,没有办法摆脱客户端 JavaScript 中的 HTTP 标头。为此,您需要设置一个服务器端脚本,然后实际连接到打印机端口。

编辑:服务器端脚本不会向您的打印机发送 HTTP 请求:它应该打开一个新套接字,因此可以完全控制发送的内容!

【讨论】:

  • 我能否在客户端 Javascript 中创建自定义 POST 请求,以尽量减少打印出的不必要信息量?
  • 是的,您可以通过 XMLHttpRequest(也称为 AJAX)发送自定义请求。但没有必要这样做:使用普通的旧 HTML 表单(使用 method="POST")和您选择的服务器端语言(PHP、ASP.NET、Perl、Python...)。 Afaik 所有这些都可以读取 POST 变量并创建套接字......
【解决方案2】:

您可以在 JS 中进行 HTTP-Request,因此无论您发送到哪个端口,您总是有一个 HTTP-Header。所以答案是:没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    相关资源
    最近更新 更多