我有以下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出了什么问题?
答案 0 :(得分:0)
Curl确实对我有用,但是当我尝试通过jQuery访问时,我得到的500错误就像你一样。当我谷歌出错时,它似乎总是因为.htaccess文件中缺少一个参数:
How can I fix the 'Missing Cross-Origin Resource Sharing (CORS) Response Header' webfont issue?
答案 1 :(得分:0)
您正在对与您的网页所在的域不同的域执行 XMLHttpRequest 。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要执行跨域请求时,您需要做一些不同的事情。关于如何实现这一目标的教程是使用 CORS 。
注意 - 当您使用邮递员时,他们不受此政策的限制。引自 Cross-Origin XMLHttpRequest
常规网页可以使用XMLHttpRequest对象从远程服务器发送和接收数据,但它们受到相同原始策略的限制。扩展不是那么有限。扩展可以与其来源之外的远程服务器通信,只要它首先请求跨源权限。