不允许HTTP 405方法,似乎是一个CORS问题

时间:2018-01-28 06:08:06

标签: javascript ajax printing cors

从我的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中执行操作。

2 个答案:

答案 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调用。然后,您的代理服务器会将您的请求路由到实际服务器,并将响应从实际服务器返回给客户端