从网页运行curl http请求

时间:2017-04-25 14:14:25

标签: javascript ajax

我有以下curl命令,可以从bash shell

运行
      $ curl  -d '{"img_url":"http://ec2-54-167-249-150.compute-1.amazonaws.com/IMG_86478_mono.bmp","engine":"tesseract"}' http://ec2-54-226-250-92.compute-1.amazonaws.com:8080/ocr

我现在想通过点击按钮的简单网页来运行它。 这是我的Javascript

      function processImage() 
      {   
          $.ajax({ 
                  url: 'http://ec2-54-226-250-92.compute-1.amazonaws.com:8080/ocr',
                  cache: false,
                  type : "POST",            
                  data: {   img_url : 'http://ec2-54-167-249-150.compute-1.amazonaws.com/IMG_86478_mono.bmp',
                    engine : 'tesseract' },
                  dataType: 'json',
                  success: function(response)
                  {
                      alert("success");
                  }    

            });
      }

但是当我通过网页按钮点击它运行这个javascript时,它会给我以下错误 “NetworkError:500内部服务器错误 - http://ec2-54-226-250-92.compute-1.amazonaws.com:8080/ocr” 而且我的success()方法永远不会被调用。

正如我所说,我知道服务器没有任何问题,因为从linux cmd提示符调用它时工作正常。问题是我的javascript出了什么问题?

2 个答案:

答案 0 :(得分:0)

Curl确实对我有用,但是当我尝试通过jQuery访问时,我得到的500错误就像你一样。当我谷歌出错时,它似乎总是因为.htaccess文件中缺少一个参数:

How can I fix the 'Missing Cross-Origin Resource Sharing (CORS) Response Header' webfont issue?

CORS header 'Access-Control-Allow-Origin' missing

答案 1 :(得分:0)

您正在对与您的网页所在的域不同的域执行 XMLHttpRequest 。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要执行跨域请求时,您需要做一些不同的事情。关于如何实现这一目标的教程是使用 CORS

注意 - 当您使用邮递员时,他们不受此政策的限制。引自 Cross-Origin XMLHttpRequest

  

常规网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受到相同原始策略的限制。扩展不是那么有限。扩展可以与其来源之外的远程服务器通信,只要它首先请求跨源权限。