从我的Javascript程序请求此URL(具有库epson-2.6.0.js
,epson sdk用于热敏打印机的javascript)。我的目标是通过以太网使用TM U220。
GET XHR http://192.168.199.15:8008/socket.io/1/
OPTIONS XHR http://192.168.199.15/cgi-bin/epos/service.cgi [HTTP/1.1 405 Method Not Allowed 7ms]
阻止跨源请求:同源策略禁止在http://192.168.199.15/cgi-bin/epos/service.cgi?devid=local_printer&timeout=10000读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。
回复标题(118 B)
Allow GET, HEAD, POST
Content-Length 0
Server Allegro-Software-RomPager/4.01
请求标题(478 B)
Accept text/html,application/xhtml+xm…plication/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en
Access-Control-Request-Headers content-type,if-modified-since,soapaction
Access-Control-Request-Method POST
Connection keep-alive
DNT 1
Host 192.168.199.15
Origin null
User-Agent Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/58.0
我一直在互联网上搜索如何解决这个问题。 有人请帮忙。我无法更改http服务器的打印机固件,只能从我控制的Javascript中执行操作。
答案 0 :(得分:2)
您需要启用ePos Webservices。 使用提供的可执行实用程序无法完成此操作。 一旦您的打印机连接到具有有效本地IP的网络,您需要使用常用浏览器浏览http://192.168.199.15(或任何您的espon打印机IP),它将询问您的用户密码,默认为epson / epson然后你需要导航到ePos打印,然后启用选项ePos Print,最后点击下面的重启按钮。 然后打印机将向HTTP响应标头添加Allow-Cross-Origin *标头,这很好,无需禁用有用的浏览器功能。
答案 1 :(得分:0)
如果您无法控制服务器,有几种方法可以解决CORS问题。
方法1。
安装CORS插件https://chrome.google.com/webstore/detail/cors-toggle/jioikioepegflmdnbocfhgmpmopmjkim?hl=en
如果您的应用程序仅供您使用且不会被其他任何人使用,那么这将非常有用。此外,像youtube这样的网站会停止工作,所以谨慎使用
方法2。
创建自己的代理服务器。推荐但需要技术诀窍。如果您的应用程序也被许多其他用户使用,则此解决方案特别有用。这是我以前做过的事情并且运作良好。您可以在heroku或任何您想要的地方托管您的代理服务器。您的代理服务器将拦截OPTIONS请求,并在响应头中发送Access-Control-Allow-Origin:*,从而使您的浏览器能够进行get / post调用。然后,您的代理服务器会将您的请求路由到实际服务器,并将响应从实际服务器返回给客户端