我正在尝试从 HTML/JavaScript 应用程序访问 REST Web 服务。我正在通过 Apache HTTPD 2.2 访问 Web 应用程序和 Web 服务。当直接在浏览器中调用时,Web 服务 GET 方法确实有效(执行并返回数据)。当尝试从 Web 应用程序调用时,Web 服务永远不会收到请求。
Web 服务 URL 是
http://127.0.0.1/pbws/all/
调用它的网页是
http://127.0.0.1/~myusername/phonebook/
我不相信我的问题是 Wikipedia ( http://en.wikipedia.org/wiki/Same_origin_policy ) 上解释的同源策略我对 Web 应用程序和被调用的应用程序使用相同的主机、协议和端口网络服务。
失败的调用是:
getAll = function (callback) {
$.ajax({
type: "GET",
url: "http://127.0.0.1/pbws/all/",
dataType: "json",
async: true,
success: function (data, textStatus, jqXHR) {
callback(data);
},
error: function (jqXHR, textStatus, errorThrown) {
console.dir(jqXHR);
alert('getAll error: ' + textStatus);
}
});
};
永远不会调用成功,只会调用错误。设置断点后,jqXHR 不包含我可以看到的任何有用信息,textStatus = "error" 并且 errorThrown 为空白。Chrome 开发人员工具/网络选项卡显示状态为“(失败)”。
我已经在 Windows 7 上使用 Chrome 23 和 Firefox 16 对此进行了测试。关于问题可能是什么或如何进一步调试的任何想法?